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