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()