始める無料で始める

NMF セグメンテーションの平均値

最後に、NMF で作成した 3 セグメント解の平均値を可視化して、K-means の結果と比較できるようにします。ここでは特徴量行列 W を抽出し、各顧客についてこの行列内で最も値が大きい列(セグメント)を選ぶことで、ハードなセグメント割り当てを行います。

pandas ライブラリは pdseaborn ライブラリは sns として読み込んであります。生データの wholesale データセットはインポート済みで、学習済みの 3 セグメントの NMF インスタンスは nmf として用意されています。components データセットは pandas の DataFrame として読み込んであります。

この演習はコースの一部です

Pythonで学ぶマーケティングのための機械学習

コースを見る

演習の手順

  • 変換後の値をデータに、components のインデックスを列名に渡して、W 行列を作成します。
  • 各行で値が最大になる列名を選び、その列名でセグメントを割り当てます。
  • セグメントごとに各列の平均値を計算します。
  • 平均値をヒートマップで可視化します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Create the W matrix
W = pd.DataFrame(data=nmf.___(wholesale), columns=components.index)
W.index = wholesale.index

# Assign the column name where the corresponding value is the largest
wholesale_nmf3 = wholesale.___(segment = W.idxmax(axis=1))

# Calculate the average column values per each segment
nmf3_averages = wholesale_nmf3.___('___').mean().round(0)

# Plot the average values as heatmap
sns.___(___.T, cmap='YlGnBu')

# Display the chart
plt.show()
コードを編集して実行