Machine_learning_using_sklearn
まえがき 前の記事で、pandasをつかってデータフレームを扱う基礎を学んだね。 めちゃめちゃ便利だということがわかったと思うが、pandasを使ってデータを整形して、最終的に何がしたいかというと、データの分析がしたいんだよね。なぜ分析したいかというと、データから何かしらの情報を得てそれを今後に役立てたいから。 今後への役立て方の一つに予測があるわけだね。そう、回帰だ。深層学習も回帰だよね。深層学習をやるにはTensorFlowっていうライブラリがめっちゃ便利だが、統計的機械学習をやるには、sklearnがある。ということでsklearnを使って統計的機械学習をやっていこう! の前に、pandas + sklernをGPUでバク速でやってくれるのがrapidsっていうフレームワークだったよね!実際に大量のデータを使って運用するときは予測にも時間をかけていられないと思うので、GPUを使った運用を考えたほうがいいですね。というか、一回現場で働いてみて、そのあと博士課程で戻ってくるのは全然ありだな。楽しそう。そっちのほうが実際の問題がわかるので有用だと思います。 はい、そのまま載せます。ちなみに、standard deviationは標準偏差です。 1. preperocessing # 5.1.1 game_sales = pd.read_csv('sales.csv', encoding='CP932').dropna() na_sales_0_to_3 = game_sales["NA_Sales"].between(0.01,3) game_sales = game_sales[na_sales_0_to_3] na_sales_reshape = game_sales["NA_Sales"].values.reshape(-1,1) from sklearn.preprocessing import StandardScaler scaler = StandardScaler() scaler.fit(na_sales_reshape) na_sales_scaled = scaler.transform(na_sales_reshape) game_sales["NA_Sales_Std"] = pd.Series(na_sales_scaled.flatten()) print(game_sales["NA_Sales_Std"].head(10), end='\n\n') # 5.1.2 old_mean_std = game_sales['NA_Sales'].agg(["mean","std"]).round(2) new_mean_std = game_sales['NA_Sales_Std'].agg(["mean","std"]).round(2) print(old_mean_std, end='\n\n') print(new_mean_std, end='\n\n') # 5.1.3 fig, axes = plt.subplots(2,1,figsize=(8,6)) sns.boxplot(data=game_sales, x='NA_Sales', ax=axes[0]) sns.boxplot(data=game_sales, x='NA_Sales_Std', ax=axes[1]) plt.show() linear regression # 5.2.1 game_sales = pd.read_csv('sales.csv', encoding='CP932').dropna() col_list = ['NA_Sales', 'EU_Sales', 'JP_Sales', 'Other_Sales', 'Global_Sales', 'Critic_Count', 'User_Score', 'Critic_Score'] from sklearn.preprocessing import scale X = scale(game_sales[col_list].values) y = scale(game_sales['User_Count'].values) from sklearn.linear_model import LinearRegression reg_model = LinearRegression() reg_model.fit(X,y) # 5.2.2 reg_coef = reg_model.coef_ report = [f'{a}\t: {b}' for a, b in zip(col_list, reg_coef)] for info in report: print(info) print(f'Regression Score :{reg_model.score(X,y)}') # 5.2.3 fig = sns.regplot(x='User_Count', y='Global_Sales', data=game_sales) fig.set(xlim=(100, 4000), ylim=(2, 20)) plt.show() Logistic Regression ロジスティック回帰分析は、いくつかの要因(説明変数)から「2値の結果(目的変数)」が起こる確率を説明・予測することができる統計手法です。 らしいです。はい、2値しか予測できない、というところがめちゃめちゃポイントですね。しっかりと頭に入れておきましょう。 ...