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

AIデータ分析初心者の私が、データ分析の工程ごとに使えるメソッドや属性を簡単に確認できるように備忘録として残します。

#目次
[1.インポート](#1-インポート)
[2.データの読み込み](#2-データの読み込み)
[3.データ概要の確認](#3-データ概要の確認)
[4.データ処理](#4-データ処理)
[5.モデル学習と推論](#5-モデル学習と推論)
[6.モデル評価](#6-モデル評価)
[7.可視化](#7-可視化)

#1. インポート
##決定木をインポート
```python
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import DecisionTreeRegressor
```
##ロジスティック回帰をインポート
```python
from sklearn.linear_model import LogisticRegression
```
##主成分分析PCAをインポート
```python
from sklearn.decomposition import PCA
```
##ランダムフォレスト回帰のインポート
```python
from sklearn.ensemble import RandomForestRegressor as RFR
```
##SVMのインポート
```python
from sklearn.svm import SVC
from sklearn.svm import LinearSVC
```
##K近傍法のインポート
```python
from sklearn.neighbors import KNeighborsClassifier
```
##K平均法のインポート
```python
from sklearn.cluster import KMeans
```
##勾配ブースティングのインポート
```python
from sklearn.ensemble import GradientBoostingClassifier
```
##確率的勾配降下法
```python
from sklearn.linear_model import SGDClassifier
```
##ナイーブベイズのインポート
```python
from sklearn.naive_bayes import GaussianNB
```
##XGBoostのインポート
```python
import xgboost as xgb
```
##ラベルエンコーダーのインポート
```python
from sklearn.preprocessing import LabelEncoder
```
##preprocessingのインポート
```python
from sklearn import preprocessing
```
##train_test_splitのインポート
```python
from sklearn.cross_validation import train_test_split
```
##モデル評価のためのMSEのインポート
```python
from sklearn.metrics import mean_squared_error
```
##モデル評価のためのRMSEのインポート
```python
from sklearn.metrics import mean_squared_error
```
##モデル評価のためのR2決定係数のインポート
```python
from sklearn.metrics import r2_score
```
##モデル評価のためのaccuracy_scoreをインポート
```python
from sklearn.metrics import accuracy_score
```
##交差検証スコアのインポート
```python
from sklearn.model_selection import cross_val_score
```
##ボストン近郊の住宅情報に関するデータセットのインポート
```python
from sklearn.datasets import load_boston
```
##アイリスに関するデータセットのインポート
```python
from sklearn.datasets import load_iris
```
##seabornのインポート
```python
import seaborn as sns
```
##missingnoのインポート
```python
import missingno as msno
```
#2. データの読み込み
##学習データの読み込み
```python
train_data = pd.read_csv('train.csv')
```
##テストデータの読み込み
```python
test_data = pd.read_csv('test.csv')
```
##学習用とテスト用データに分割
```python
(x_train, x_test, y_train, y_test) = train_test_split(x, y, test_size = 0.2)
```
#3. データ概要の確認
##平均・標準偏差等の各列の要約統計量を取得
```python
data.describe()
```
##dfとseriesの先頭・末尾の行を返す
```python
data.head()
data.tail()
```
##dfの各列間の相関係数を算出
```python
data.corr()
```
##seriesのユニークな要素の値のリストを返す
```python
data['hoge'].unique()
```
##行か列にnanが含まれているかの確認
any()をisnull()の結果に対して適用することで、行・列ごとに欠損値NaNをひとつでも含むか判定

```python
data.isnull().any()
```
##dfの各列のデータ型を取得
```python
data.dtypes
```
##dfのカラム一覧を取得
リスト化→list(data.columns)

```python
data.columns
```
##missingnoを使ったdfの欠損値の可視化
```python
msno.matrix(df)
msno.bar(df)
msno.heatmap(df)
```
#4. データ処理
##dfに新たな列を追加したり既存の列に新たな値を代入
A = 0の場合、

```python
data.assign(A = 0)
```
##dfの行結合
```python
all_data = pd.concat([train_data, test_data])
```
##Seriesのインデックスと値の取得
```python
df['hoge'].value_counts().index
df['hoge'].value_counts().values
```
##dfのコピー
```python
data_copy = data.copy()
```

##dfの文字列のダミー化
```python
data.hoge = data.hoge.replace({'yes': 1, 'no': 0})
```

##dfのカラムのデータをダミー変数に変換
```python
pd.get_dummies(df['hoge'])
```
##dfの不要なカラムの削除
axis = 0は行、axis = 1は列を指定
inplaceをTrueにすることで、元のdfが変更される

```python
df.drop(['hoge'], axis = 1, inplace = True)
```
##カラム名の削除
```python
feature_cols = list(set(data.columns) - set(['hoge']))
features = data[feature_cols]
```
##欠損値の置き換え
0に置き換える場合、

```python
df.fillna(0)
```
##標準化
```python
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()→変換

```python
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. モデル学習と推論
##ランダムフォレストによる学習と回帰分析
```python
rfr = RFR()
rfr.fit(x_train, y_train)
y_test_pred = rfr.predict(x_test)
rfr.score(y_test, y_test_pred)
```
##決定木の学習と推論
```python
clf = DecisionTreeClassifier()
(clf = DecisionTreeRegressor())
clf = clf.fit(x_train, y_train)
pred = clf.predict(x_train)
plot_tree(clf)
```
##ロジスティック回帰の学習と推論
```python
clf = LogisticRegression()
clf.fit(x_train, y_train)
clf.predict(x_test)
```
##SVMの学習と推論
```python
svc = SVC()
(svc = LinearSVC())
svc.fit(x_train, y_train)
pred = svc.predict(x_test)
```
##主成分分析の学習と推論
```python
pca = PCA(n_components = 3)
pca.fit_transform(x_train)
pca.fit(x_test)
```
##K近傍法の学習と推論
```python
knn = KNeighborsClassifier()
knn.fit(x_train, y_train)
pred = knn.predict(x_test)
```
##K平均法の学習と推論
```python
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]
```
##勾配ブースティングの学習と推論
```python
gbk = GradientBoostingClassifier()
gbk.fit(x_train, y_train)
pred = gbk.predict(x_test)
```
##確率的勾配降下法の学習と推論
```python
sgd = SGDClassifier()
sgd.fit(x_train, y_train)
pred = sgd.predict(x_test)
```
##ナイーブベイズの学習と推論
正規分布を仮定したベイズ分類

```python
clf = GaussianNB()
clf.fit(x_train, y_train)
clf.predict(x_test)
```
##XGBoostの学習と推論
```python
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)
```python
scores = mean_squared_error(y, y_pred)
```
##RMSE(Root Mean Squared Error)
```python
scores = sqrt(mean_squared_error(y, y_pred))
```
##R2決定係数
```python
scores = r2_score(y, y_pred)
```
##モデル評価
```python
accuracy_score(y, y_pred)
```
##交差検証スコア
```python
scores = cross_val_score(clf, x, y, cv = 5)
```

#7. 可視化
##折れ線グラフ
```python
plt.plot(df['hoge'])
```
##棒グラフ
```python
plt.bar(df['hoge'])
```
##散布図
```python
plt.scatter(df['hoge'], df['hogehoge'])
```
##ヒストグラム
```python
plt.hist(df['hoge'], label = 'hoge')
```
##円グラフ
```python
values = df['hoge'].value_counts().values
label = df['hoge'].value_counts().index
plt.pie(values, labels = label)
```
##箱ひげ図
```python
plt.boxplot(df['hoge'])
```
##ラベルをつける
```python
plt.xlabel('x_title')
plt.ylabel('y_title')
```
##グリッドつける
```python
plt.grid()
```
##描画
```python
plt.show()
```