Pythonのチュートリアル:教師付き機械学習

6.1トレーニングデータのロジスティック回帰モデルをフィットし、試験データに対して評価します。

a)のトレーニングデータのロジスティック回帰モデルをフィット。

私たちは、環境に読み込まれる必要があり、新たなデータセットを使用している#通知
電車を= pd.read_csv(「/ユーザ/ tips_train.csv」)
テスト= pd.read_csv(「/ユーザ/ tips_test.csv」)
電車[ "15 "] = 0.15 *列車[" total_bill "]
列車[" greater15 "] = np.where(列車["チップ"]>列車[" 15 "]、1、0)
テスト[" 15 "] = 0.15 *試験【 "total_bill"]
試験[ "greater15"] = np.where(試験[ "チップ"]>試験[ "15"]、1、0)
logreg = sm.formula.glm( "greater15〜total_bill"、
家族= sm.families.Binomial()、
データ=列車).fit()
プリント(logreg.summary())

b)の試験データに対してモデルを評価します。

#予測試験データに
予測= logreg.predict(テスト)
perdy = np.where(予測<0.5、0、1)
予測確率が0.5未満である場合、0として分類
#そうでなければ1として分類します。これが最善の方法ではありません-より良い
#の方法は、ランダムに0または1時に0.5の確率割り当てるだろう
#occurrsが、これは結果が一貫していることを保証する
どのように多くの正しく分類された決定する#
結果を= np.where(perdyを==試験[ "greater15"]、 "正しい"、 "間違った")
印刷(pd.crosstab(インデックス=結果、列= "カウント"))

ロジスティック回帰モデルを使用して実装することができる  sklearnを但し、statsmodels.apiは  モデルに関する有用な要約を提供し、それは、この例のために好適です。

6.2トレーニングデータの線形回帰モデルをフィットし、試験データに対して評価します。

a)のトレーニングデータの線形回帰モデルをフィット。

私たちは、環境に読み込まれる必要があり、新たなデータセットを使用している#通知
電車を= pd.read_csv(「/ユーザ/ boston_train.csv」)
テスト= pd.read_csv(「/ユーザ/ boston_test.csv」)
は、線形フィット回帰モデル
linreg = 線形回帰()
linreg.fit(train.drop([ "標的"]、軸= 1)、列車[ "標的"])
プリント(linreg.coef_)
プリント(linreg.intercept_)

b)の試験データに対してモデルを評価します。

試験データに#予測
予測= pd.DataFrame()
予測[ "perdy"] = linreg.predict(test.drop([ "標的"]、軸= 1))
は、平均二乗誤差を決定
= [ "sq_diff"]予測(予測[ "perdy"] -テスト[ "ターゲット"])** 2
プリント(np.mean(予測[ "sq_diff"]))

6.3学習データに決定木モデルを取り付け、試験データに対して評価します。

a)は、決定木分類モデルをフィット。

ⅰ)学習データに決定木分類モデルをフィットし、変数の重要度を決定します。

私たちは、環境に読み込まれる必要があり、新たなデータセットを使用している#通知
電車を= pd.read_csv(「/ユーザ/ breastcancer_train.csv」)
テスト= pd.read_csv(「/ユーザ/ breastcancer_test.csv」)
sklearn.treeからインポートDecisionTreeClassifier
よう#random_stateはランダムな整数のためのシードを指定するために使用され
#結果が再現可能である
treeMod = DecisionTreeClassifier(random_state = 29)
treeMod.fit(train.drop([ "標的"]、軸= 1)、列車[ "標的"])
変数の重要性を決定
var_import = treeMod.feature_importances_
var_import = pd.DataFrame(var_import)
var_import = var_import.rename(列= {0 '重要'})
=によるvar_import = var_import.sort_values(」重要性」、種類= 『マージ』、
昇順= False)が
印刷(var_import.head())

ⅱ)試験データに対してモデルを評価します。

テストデータの#予測
perdy = treeMod.predict(test.drop([ "標的"]、軸= 1))
何正しく分類された決定
結果= np.where(試験[ "ターゲット"] == perdyを、「正しい」、 "間違った")
プリント(pd.crosstab(インデックス=結果、列= "回数"))

b)の決定木の回帰モデルをフィット。

ⅰ)トレーニングデータの決定木の回帰モデルをフィットし、変数の重要度を決定します。

列車= pd.read_csv( '/ユーザ/ boston_train.csv')
試験= pd.read_csv( '/ユーザ/ boston_test.csv')
sklearn.treeインポートDecisionTreeRegressorから
treeMod = DecisionTreeRegressor(random_state = 29)
treeMod.fit(列車。ドロップ([ "標的"]、軸= 1)、列車[ "標的"])
は、変数の重要度を決定
var_import = treeMod.feature_importances_
var_import = pd.DataFrame(var_import)
var_import = var_import.rename(列= {0: '重要「})
var_import = var_import.sort_values(種類= "マージ"、 "重要度" =によって、
昇順=偽)
プリント(var_import.head())

ⅱ)試験データに対してモデルを評価します。

試験データに#予測
予測= pd.DataFrame()
予測[ "perdy"] = treeMod.predict(test.drop([ "標的"]、軸= 1))
は、平均二乗誤差の決定
[ "sq_diff"]予測= (予測[ "perdy"] -テスト[ "ターゲット"])** 2
プリント(np.mean(予測[ "sq_diff"]))

6.4トレーニングデータのランダムフォレストモデルを取り付け、試験データに対して評価します。

a)はランダムフォレスト分類モデルをフィット。

ⅰ)トレーニングデータのランダムフォレスト分類モデルをフィットし、変数の重要度を決定します。

列車= pd.read_csv( '/ユーザ/ breastcancer_train.csv')
試験= pd.read_csv( '/ユーザ/ breastcancer_test.csv')
sklearn.ensembleインポートRandomForestClassifierから
rfMod = RandomForestClassifier(random_state = 29)
rfMod.fit(列車。ドロップ([ "標的"]、軸= 1)、列車[ "標的"])
は、変数の重要度を決定
var_import = rfMod.feature_importances_
var_import = pd.DataFrame(var_import)
var_import = var_import.rename(列= {0: '重要「})
var_import = var_import.sort_values(種類= "マージ"、 "重要度" =によって、
昇順=偽)
プリント(var_import.head())

ⅱ)試験データに対してモデルを評価します。

テストデータの#予測
perdy = rfMod.predict(test.drop([ "標的"]、軸= 1))
何正しく分類された決定
結果= np.where(試験[ "ターゲット"] == perdyを、「正しい」、 "間違った")
プリント(pd.crosstab(インデックス=結果、列= "回数"))

b)はランダムフォレスト回帰モデルをフィット。

ⅰ)トレーニングデータのランダムフォレスト回帰モデルをフィットし、変数の重要度を決定します。

列車= pd.read_csv( '/ユーザ/ boston_train.csv')
試験= pd.read_csv( '/ユーザ/ boston_test.csv')
sklearn.ensembleインポートRandomForestRegressorから
rfMod = RandomForestRegressor(random_state = 29)
rfMod.fit(列車。ドロップ([ "標的"]、軸= 1)、列車[ "標的"])
は、変数の重要度を決定
var_import = rfMod.feature_importances_
var_import = pd.DataFrame(var_import)
var_import = var_import.rename(列= {0: '重要「})
var_import = var_import.sort_values(種類= "マージ"、 "重要度" =によって、
昇順=偽)
プリント(var_import.head())

ⅱ)試験データに対してモデルを評価します。

試験データに#予測
予測= pd.DataFrame()
予測[ "perdy"] = rfMod.predict(test.drop([ "標的"]、軸= 1))
は、平均二乗誤差の決定
[ "sq_diff"]予測= (試験[ "ターゲット"] -予測[ "perdy"])** 2
プリント(予測[ "sq_diff"](平均))。

6.5学習データにモデルを高める勾配を取り付け、試験データに対して評価します。

a)の分類モデルを高める勾配を合わせます。

ⅰ)学習データに分類モデルを高める勾配を取り付け、変数の重要度を決定します。

列車= pd.read_csv( '/ユーザ/ breastcancer_train.csv')
試験= pd.read_csv( '/ユーザ/ breastcancer_test.csv')
sklearn.ensembleインポートGradientBoostingClassifierから
と類似している合うように木の#n_estimators =総数
反復の#番号
#learning_rate =収縮以下縮小、サイズステップ
#学習速度がより多くの反復が必要
gbMod = GradientBoostingClassifier(random_state = 29、learning_rate = 0.01、
n_estimators = 2500)
gbMod.fit(train.drop([」をターゲット"]、軸= 1)、列車["ターゲット"])
は、変数の重要度を決定
var_import = gbMod.feature_importances_
var_import = pd.DataFrame(var_import)
var_import = var_import.rename(列= {0 '重要'})
var_import = var_import.sort_values(= "重要度"によって、種類= "マージ"、
昇順=偽)
プリント(var_import.head())

ⅱ)試験データに対してモデルを評価します。

試験データに#予測
perdy = gbMod.predict(test.drop([ "標的"]、軸= 1))
がどのように多くの正しく分類された決定
結果= np.where(試験[ "ターゲット"] == perdy、 "正しい」、 "間違った")
プリント(pd.crosstab(インデックス=結果、列= "回数"))

b)の勾配後押し回帰モデルをフィット。

ⅰ)学習データに回帰モデルを高める勾配を取り付け、変数の重要度を決定します。

列車= pd.read_csv( '/ユーザ/ boston_train.csv')
試験= pd.read_csv( '/ユーザ/ boston_test.csv')
sklearn.ensembleインポートからGradientBoostingRegressor
gbMod = GradientBoostingRegressor(random_state = 29、learning_rate = 0.01、
n_estimators = 2500)
gbMod.fit(train.drop([ "標的"]、軸= 1)、列車[ "標的"])
は、変数の重要度を決定
var_import = gbMod.feature_importances_
var_import = pd.DataFrame(var_import)
var_import = var_import。リネーム(列= {0 '重要'})
"重要度" =によって、種類= "マージ"、var_import = var_import.sort_values
昇順=偽)
プリント(var_import.head())

ⅱ)試験データに対してモデルを評価します。

試験データに#予測
予測= pd.DataFrame()
予測[ "perdy"] = gbMod.predict(test.drop([ "標的"]、軸= 1))
は、二乗誤差の平均を決定
=予測[ "sq_diffを"] (試験[ "ターゲット"] -予測[ "perdy"])** 2

6.6学習データにモデルを高める極端な勾配を取り付け、試験データに対して評価します。

a)は学習データに分類モデルを高める極端な勾配を取り付け、試験データに対して評価します。

ⅰ)学習データに分類モデルを高める極端な勾配を合わせます。

電車= pd.read_csv( '/ユーザ/ breastcancer_train.csv')
テスト= pd.read_csv( '/ユーザ/ breastcancer_test.csv')
からxgboost輸入XGBClassifier
トレーニングデータ上の#フィットXGBClassifierモデル
xgbMod = XGBClassifier(シード= 29、learning_rate = 0.01、
n_estimators = 2500)
xgbMod.fit(train.drop([ "標的"]、軸= 1)、列車[ "標的"])

ⅱ)試験データに対してモデルを評価します。

テストデータの#予測
perdy = xgbMod.predict(test.drop([ "標的"]、軸= 1))
何正しく分類された決定
結果= np.where(試験[ "ターゲット"] == perdyを、「正しい」、 "間違った")
プリント(pd.crosstab(インデックス=結果、列= "回数"))

b)は学習データに回帰モデルを高める極端な勾配を取り付け、試験データに対して評価します。

ⅰ)学習データに回帰モデルを高める極端な勾配を合わせます。

電車= pd.read_csv( '/ユーザ/ boston_train.csv')
テスト= pd.read_csv( '/ユーザ/ boston_test.csv')
xgboost輸入XGBRegressorからの
トレーニングデータに#フィットXGBRegressorモデル
xgbMod = XGBRegressor(シード= 29、learning_rate = 0.01、
n_estimators = 2500)
xgbMod.fit(train.drop([ "標的"]、軸= 1)、列車[ "標的"])

ⅱ)試験データに対してモデルを評価します。

試験データに#予測
予測= pd.DataFrame()
予測[ "perdy"] = xgbMod.predict(test.drop([ "標的"]、軸= 1))
は、平均二乗誤差の決定
[ "sq_diff"]予測= (試験[ "ターゲット"] -予測[ "perdy"])** 2
プリント(予測[ "sq_diff"](平均))。

6.7トレーニングデータのサポートベクトルモデルを取り付け、試験データに対して評価します。

a)はサポートベクトル分類モデルをフィット。

ⅰ)トレーニングデータのサポートベクトル分類モデルをフィット。

注意:実装のスケーリングでは使用すべきです。
列車= pd.read_csv( '/ユーザ/ breastcancer_train.csv')
試験= pd.read_csv( '/ユーザ/ breastcancer_test.csv')
は、サポートベクター分類モデルをフィット
sklearn.svmインポートSVCから
svMod = SVC(random_state = 29 、カーネル= 'リニア')
svMod.fit(train.drop([ "標的"]、軸= 1)、列車[ "標的"])
ii)の試験データに対するモデルを評価します。
試験データに#予測
予測= svMod.predict(test.drop([ "標的"]、軸= 1))
は、正しく分類されたどのように多くの決定
」、結果= np.where(試験[ "ターゲット"] ==予測正しい」、 "間違った")
プリント(pd.crosstab(インデックス=の結果、

b)はサポートベクトル回帰モデルをフィット。

ⅰ)トレーニングデータのサポートベクトル回帰モデルをフィット。

注意:実装のスケーリングでは使用すべきです。
列車= pd.read_csv( '/ユーザ/ boston_train.csv')
試験= pd.read_csv( '/ユーザ/ boston_test.csv')
は、サポートベクトル回帰モデルにフィット
sklearn.svmインポートSVRから
svMod = SVR()
svMod。フィット(train.drop([ "標的"]、軸= 1)、列車[ "標的"])

ⅱ)試験データに対してモデルを評価します。

試験データに#予測
予測= pd.DataFrame()
予測[ "perdy"] = svMod.predict(test.drop([ "標的"]、軸= 1))
は、平均二乗誤差の決定
[ "sq_diff"]予測= (試験[ "ターゲット"] -予測[ "perdy"])** 2
プリント(予測[ "sq_diff"](平均))。

6.8トレーニングデータのニューラルネットワークモデルを取り付け、試験データに対して評価します。

a)は、ニューラルネットワーク分類モデルをフィット。

ⅰ)トレーニングデータのニューラルネットワーク分類モデルをフィット。

私たちは、新しいデータセットを使用している#お知らせ
= pd.read_csv(「/ユーザ/ digits_train.csv」)を鍛える
テスト= pd.read_csv(「/ユーザ/ digits_test.csv」)
は、トレーニングデータのニューラルネットワーク分類モデルをフィット
sklearnから.neural_networkインポートMLPClassifier
nnMod = MLPClassifier(max_iter = 200、hidden_​​layer_sizes =(100)、
random_state = 29)
nnMod.fit(train.drop([ "標的"]、軸= 1)、列車[ "標的"])
II )試験データに対してモデルを評価します。
#予測試験データに
perdy = nnMod.predict(test.drop([ "標的"]、軸= 1))
正しく分類されたどのように多くの決定
sklearn.metricsからconfusion_matrixインポート
プリント(confusion_matrixを(試験[ "標的"]、perdy))

b)は、ニューラルネットワーク回帰モデルをフィット。

ⅰ)トレーニングデータのニューラルネットワーク回帰モデルをフィット。

列車= pd.read_csv( '/ユーザ/ boston_train.csv')
試験= pd.read_csv( '/ユーザ/ boston_test.csv')
スケール入力データ
インポートStandardScaler sklearn.preprocessingから
train_features = train.drop([ "ターゲット"を]、軸= 1)
スケーラ= StandardScaler()。フィット(np.array(train_features))
train_scaled = scaler.transform(np.array(train_features))
train_scaled = pd.DataFrame(train_scaled)
test_features = test.drop([」ターゲット"]、軸= 1)
スケーラ= StandardScaler()。フィット(np.array(test_features))
test_scaled = scaler.transform(np.array(test_features))
test_scaled = pd.DataFrame(test_scaled)
フィットニューラルネットワーク回帰モデル、スケール50によってターゲットを分割
sklearnから。neural_networkインポートMLPRegressor
nnMod = MLPRegressor(max_iter = 250、random_state = 29、ソルバ= 'lbfgs')
nnMod = nnMod.fit(train_scaled、列車[ "ターゲット"] / 50)

ⅱ)試験データに対してモデルを評価します。

思い出し試験データに#予測は、50によって乗算する
= pd.DataFrame()予測
予測[ "perdy"] = nnMod.predict(test_scaled)* 50
#は、平均二乗誤差判別
予測[ "sq_diff"] =(試験[「ターゲットを"] -予測[" perdy "])** 2
プリント(予測[")sq_diff "]平均(。)

おすすめ

転載: www.cnblogs.com/nuswgg95528736/p/8028408.html