AIデータ分析初心者の私が、データ分析の工程ごとに使えるメソッドや属性を簡単に確認できるように備忘録として残します。
目次
1.インポート
2.データの読み込み
3.データ概要の確認
4.データ処理
5.モデル学習と推論
6.モデル評価
7.可視化
1. インポート
決定木をインポート
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import DecisionTreeRegressor
ロジスティック回帰をインポート
from sklearn.linear_model import LogisticRegression
主成分分析PCAをインポート
from sklearn.decomposition import PCA
ランダムフォレスト回帰のインポート
from sklearn.ensemble import RandomForestRegressor as RFR
SVMのインポート
from sklearn.svm import SVC
from sklearn.svm import LinearSVC
K近傍法のインポート
from sklearn.neighbors import KNeighborsClassifier
K平均法のインポート
from sklearn.cluster import KMeans
勾配ブースティングのインポート
from sklearn.ensemble import GradientBoostingClassifier
確率的勾配降下法
from sklearn.linear_model import SGDClassifier
ナイーブベイズのインポート
from sklearn.naive_bayes import GaussianNB
XGBoostのインポート
import xgboost as xgb
ラベルエンコーダーのインポート
from sklearn.preprocessing import LabelEncoder
preprocessingのインポート
from sklearn import preprocessing
train_test_splitのインポート
from sklearn.cross_validation import train_test_split
モデル評価のためのMSEのインポート
from sklearn.metrics import mean_squared_error
モデル評価のためのRMSEのインポート
from sklearn.metrics import mean_squared_error
モデル評価のためのR2決定係数のインポート
from sklearn.metrics import r2_score
モデル評価のためのaccuracy_scoreをインポート
from sklearn.metrics import accuracy_score
交差検証スコアのインポート
from sklearn.model_selection import cross_val_score
ボストン近郊の住宅情報に関するデータセットのインポート
from sklearn.datasets import load_boston
アイリスに関するデータセットのインポート
from sklearn.datasets import load_iris
seabornのインポート
import seaborn as sns
missingnoのインポート
import missingno as msno
2. データの読み込み
学習データの読み込み
train_data = pd.read_csv('train.csv')
テストデータの読み込み
test_data = pd.read_csv('test.csv')
学習用とテスト用データに分割
(x_train, x_test, y_train, y_test) = train_test_split(x, y, test_size = 0.2)
3. データ概要の確認
平均・標準偏差等の各列の要約統計量を取得
data.describe()
dfとseriesの先頭・末尾の行を返す
data.head()
data.tail()
dfの各列間の相関係数を算出
data.corr()
seriesのユニークな要素の値のリストを返す
data['hoge'].unique()
行か列にnanが含まれているかの確認
any()をisnull()の結果に対して適用することで、行・列ごとに欠損値NaNをひとつでも含むか判定
data.isnull().any()
dfの各列のデータ型を取得
data.dtypes
dfのカラム一覧を取得
リスト化→list(data.columns)
data.columns
missingnoを使ったdfの欠損値の可視化
msno.matrix(df)
msno.bar(df)
msno.heatmap(df)
4. データ処理
dfに新たな列を追加したり既存の列に新たな値を代入
A = 0の場合、
data.assign(A = 0)
dfの行結合
all_data = pd.concat([train_data, test_data])
Seriesのインデックスと値の取得
df['hoge'].value_counts().index
df['hoge'].value_counts().values
dfのコピー
data_copy = data.copy()
dfの文字列のダミー化
data.hoge = data.hoge.replace({'yes': 1, 'no': 0})
dfのカラムのデータをダミー変数に変換
pd.get_dummies(df['hoge'])
dfの不要なカラムの削除
axis = 0は行、axis = 1は列を指定
inplaceをTrueにすることで、元のdfが変更される
df.drop(['hoge'], axis = 1, inplace = True)
カラム名の削除
feature_cols = list(set(data.columns) - set(['hoge']))
features = data[feature_cols]
欠損値の置き換え
0に置き換える場合、
df.fillna(0)
標準化
scaler = preprocessing.StandardScaler().fit(x_train)
x_train_scaled = scaler.transform(x_train)
x_test_scaled = scaler.transform(x_test)
ラベルの数値化
LabelEncoder()→宣言
le.fit()→ラベルとラベルIDの対応づけ
le.transform()→変換
for i in range(train.shape[1]):
if train.iloc[:, i].dtypes == object:
le = LabelEncoder()
le.fit(train.iloc[:, i].values + test.iloc[:, i].values)
train.iloc[:, i] = le.transform(train.iloc[:, i].values)
test.iloc[:, i] = le.transform(test.iloc[:, i].values)
5. モデル学習と推論
ランダムフォレストによる学習と回帰分析
rfr = RFR()
rfr.fit(x_train, y_train)
y_test_pred = rfr.predict(x_test)
rfr.score(y_test, y_test_pred)
決定木の学習と推論
clf = DecisionTreeClassifier()
(clf = DecisionTreeRegressor())
clf = clf.fit(x_train, y_train)
pred = clf.predict(x_train)
plot_tree(clf)
ロジスティック回帰の学習と推論
clf = LogisticRegression()
clf.fit(x_train, y_train)
clf.predict(x_test)
SVMの学習と推論
svc = SVC()
(svc = LinearSVC())
svc.fit(x_train, y_train)
pred = svc.predict(x_test)
主成分分析の学習と推論
pca = PCA(n_components = 3)
pca.fit_transform(x_train)
pca.fit(x_test)
K近傍法の学習と推論
knn = KNeighborsClassifier()
knn.fit(x_train, y_train)
pred = knn.predict(x_test)
K平均法の学習と推論
km = KMeans(n_clusters=3)
result = km.fit(x_data)
x = x_data[:,0]
y = x_data[:,1]
X = result.cluster_centers_[:,0]
Y = result.cluster_centers_[:,1]
勾配ブースティングの学習と推論
gbk = GradientBoostingClassifier()
gbk.fit(x_train, y_train)
pred = gbk.predict(x_test)
確率的勾配降下法の学習と推論
sgd = SGDClassifier()
sgd.fit(x_train, y_train)
pred = sgd.predict(x_test)
ナイーブベイズの学習と推論
正規分布を仮定したベイズ分類
clf = GaussianNB()
clf.fit(x_train, y_train)
clf.predict(x_test)
XGBoostの学習と推論
xgb = xgb.XGBRegressor()
xgb.fit(x_train, y_train)
y_train_pred = xgb.predict(x_train)
y_test_pred = xgb.predict(x_test)
6. モデル評価
MSE(Mean Squared Error)
scores = mean_squared_error(y, y_pred)
RMSE(Root Mean Squared Error)
scores = sqrt(mean_squared_error(y, y_pred))
R2決定係数
scores = r2_score(y, y_pred)
モデル評価
accuracy_score(y, y_pred)
交差検証スコア
scores = cross_val_score(clf, x, y, cv = 5)
7. 可視化
折れ線グラフ
plt.plot(df['hoge'])
棒グラフ
plt.bar(df['hoge'])
散布図
plt.scatter(df['hoge'], df['hogehoge'])
ヒストグラム
plt.hist(df['hoge'], label = 'hoge')
円グラフ
values = df['hoge'].value_counts().values
label = df['hoge'].value_counts().index
plt.pie(values, labels = label)
箱ひげ図
plt.boxplot(df['hoge'])
ラベルをつける
plt.xlabel('x_title')
plt.ylabel('y_title')
グリッドつける
plt.grid()
描画
plt.show()