1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AIデータ分析チートシート

Posted at

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?