4.K平均アルゴリズム-アプリケーション4/17

1.画像圧縮にK平均アルゴリズムを適用する

  写真を読む

  画像ファイルサイズ、メモリサイズ、画像データ構造、線形化を観察します

  kmeansを使用して画像のピクセルカラーをクラスター化する

  各ピクセルの色カテゴリ、各カテゴリの色を取得します

  圧縮画像の生成:元のピクセルの色をクラスタリングで置き換え、2次元に戻ります

  メモリサイズを使用して、圧縮された画像のファイルサイズを確認する

sklearn.datasets インポートload_sample_image
 から sklearn.cluster インポート関数kmeans
 インポートmatplotlib.pyplot ASのPLT
 のインポートSYS
 インポートmatplotlib.image AS IMG
 インポートnumpyのAS NP 

#は、画像の読み取り 
画像= img.imread(" ./1.jpgを" print' 元の画像ファイルサイズ:' 、image.size)
 print' 元の画像メモリサイズ:' 、sys.getsizeof(image))
 print' 元の画像データ構造:\ n ' 、画像)

plt.rcParams [ ' font.sans-serif ' ] = [ ' SimHei ' ] 
plt.title(" 元の画像" 
plt.imshow(画像)
plt.show() 

 元の画像サイズとデータ構造

       

 元の画像:

     

画像ピクセルカラークラスタリングの関数kmeansで 
イメージイメージ= [3 ::、::。3]  低減された解像度 
X-image.reshape =(-1 ,. 3 印刷(image.shape、X.shape)
n_colors = 64 
モデル = 関数kmeans(n_colors)
ラベル = model.fit_predict(X-)  は、各画素のカテゴリの色を取得する 
色= model.cluster_centers_   各色カテゴリについて取得

new_image =色[ラベル] .reshape(image.shape)  ポリ元のピクセルの色はクラスで置き換えられ、2次元の
印刷に復元されます' 圧縮画像ファイルのサイズ:' 、new_image.size)印刷' 圧縮画像はメモリサイズを占有
 します:'、sys.getsizeof(new_image))
 print' 圧縮画像データ構造:\ n ' 、new_image)
img.imsave(' D://機械学習/ 2.jpg '、new_image)

 圧縮された画像サイズとデータ構造:

      

元の画像と圧縮された画像のサイズの比較:

    

plt.title(" 圧縮画像" 
plt.imshow(new_image.astype(np.uint8))  整数の色平均
plt.show()

plt.title(" 二次圧縮画像" 
plt.imshow( new_image.astype(np.uint8)::。3、::。3])  さらに、選択されたすべての3つの画素圧縮された圧縮画像 
(plt.show)を

 画像を2回圧縮します。

    

 

    

 2.学習と生活においてK平均法で解決できる問題を観察します。

  広州、天河区の住宅価格を観察するデータは次のとおりです。

      

  建物の価格に対する建物の面積と建物の年の影響を観察するため、次の3つの列を選択して新しいデータフレームを作成し、それを配列に変換しました。

      

  次に、モデルを構築します。構築が完了したら、クラスタリングセンター(0、1、2)を3つの配列に分割します。

      

  a1、b1、c1を表示する:(小さなエラー)

    ①a1:400 <合計金額<1000(中価格物件)

      

     ②b1:総額> 1000(高額不動産)

      

     ③c1:合計価格<= 400(低コストの不動産)

      

  データを視覚化し、建物の価格に従ってデータを分割します。これは、高、中、低の価格に大別できます。視覚化の結果は次のとおりです。

     

  建築面積が大きいほど価格が高くなる新築年月で、低価格のものは狭い面積を占めているか、建築に時間がかかり、家が古くなっています。家を購入したい場合は、これら2つの要素を比較できます。ほぼ価格の見積もりがあります。

コードは次のとおりです。

インポートnumpyのAS NP
 インポートASのPLTをmatplotlib.pyplot
 から sklearn.cluster インポート関数kmeans
 インポートPANDAS AS PD 

ハウス(= pd.read_csv ' house.csv ' = 0、index_col)  、データを読み出す 
DATAL =ハウス[ハウス[ ' 領域' ] == ミルキー ]   #の抽出領域の領域データミルキーで 
TEST_DATA DATAL = [ 建物年の構築面積(平方メートル)を構築 ]   前記3つのデータサンプルとしました
= np.arrayデータ(TEST_DATA)  型変換

モデル =関数kmeans(= n_clusters。3)  ビルドモデル
model.fit(データ)
Y = model.predict(データ)   #の予測、分類
model.cluster_centers_ 

A = [] 
B = [] 
C = [] 
D = [] 
#1 のデータは、後続の可視化のために、クラスタ中心によって分類 するための I における範囲(LEN(データ)) IF Y [I] == 0: a.append(データ[I 、:) a1 = np.array(a) elif y [i] == 1 b.append(data [i、:]) b1 = np.array(b) else c.append(data [i、:]) c1 = np.array(c) plt.rcParams [ ' font.sans-serif ' ] = [ ' SimHei ' ] plt.scatter(a1 [:, 1]、a1 [:, 0]、s = 55、c = ' #A6CEE3 '、marker = " * "ポリメラーゼ类中心= 0类 plt.scatter(b1 [:, 1]、b1 [:, 0]、s = 50、c = ' #FDBF6F '、marker = " D "。クラスタ中心=クラス1 plt.scatter(C1 [:1。]、C1 [:0]、S = 50、C = ' #B66538 '、マーカー= " X "#のクラスタ中心クラス2 = PLT .legend([ ' 中価格プロパティ'' 高価格プロパティ'' 低価格プロパティ' ]) plt.ylabel(" 築年" plt.xlabel(" 建築面積(平方メートル)" plt.title(" Tianhe不動産価格の分類と不動産面積および年係数の関係" plt.show()

おすすめ

転載: www.cnblogs.com/jwwzone/p/12719354.html