前回までの内容
ここからbiplotを使ってどういうデータ構造になっているか生存の色付けとともに確認します。
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
def biplot_spv(df, y):
for col in df.columns:
df[col] = (df[col] - df[col].mean()) / df[col].std()
model = PCA()
model.fit(df)
df_pc = model.transform(df)
com = model.components_
evr = model.explained_variance_ratio_
fac = []
for i in range(len(evr)):
fac.append(np.sqrt(model.explained_variance_ratio_)[i] * model.components_[i])
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax2.scatter(df_pc[:, 0], df_pc[:, 1], cmap="brg", c=y, marker="x")
ax3 = ax1.twiny()
ylim = [abs(max(fac[1])), abs(min(fac[1]))]
xlim = [abs(max(fac[0])), abs(min(fac[0]))]
for i in range(len(df.columns)):
ax3.plot([0, fac[0][i]], [0, fac[1][i]], color="#FF0000")
ax3.text(fac[0][i], fac[1][i], df.columns[i])
ax3.set_xlim(-max(xlim), max(xlim))
ax3.set_ylim(-max(ylim), max(ylim))
plt.show()
biplot_spv(x2, y)
この結果から分かることとして男性より女性の方が生き残りやすく、年齢は低い方が男性でも生き残りやすい(家族の子供か?)。また、敬称ではMrsの方がMissよりベクトルからは生き残り安いことがわかる(既婚者だから家族持ち?)。
そのほかにも解釈は色々あると思いますが簡単にわかる解釈ではこのくらいは簡単に見つかるのではないかと考えます。
あとEmbarkedがCの人は生き残値やすいみたいですね。
いずれにしても映画のタイタニック未視聴者だと前情報よくわからないので見てからだと何か違うかもしれませんね。