一般的なモデル:
線形回帰、モデル決定木モデル、GBDTモデル、XGBoostモデル、LightGBMモデル
単純な線形回帰、sklearnを使用できます
from sklearn.linear_model import LinearRegression
model = LinearRegression(normalize=True)
model = model.fit(train_X, train_y)
モデルを単純に構築すると、予測やフィッティングの効果が良くないことがわかります。次に、データに問題があるかどうかを確認する必要があります。ここでのデータの問題は、シンボルがモデルの条件を満たしていないことです。
モデルを選択するかしないかを決めるときは、まずこのモデルが適用できる条件を考慮し、それらの基本的な仮定を満たさなければなりません。不適切な例を挙げると、私たちは3 7 21を気にせず、直線を使用して曲線に合わせると、必然的に良い結果が得られません。
相互検証(相互検証)
5分割交差検定
使用sklearn
from sklearn.model_selection import cross_val_score
#Evaluate a score by cross-validation
from sklearn.metrics import mean_absolute_error, make_scorer
#Mean absolute error regression loss
#Make a scorer from a performance metric or loss function.
埋め込まれた特徴選択
フィルタリングとラッピングの特徴選択方法では、特徴選択プロセスは学習者のトレーニングプロセスとは明らかに異なります。埋め込まれた特徴選択は、学習者のトレーニング中に自動的に特徴選択を実行します。最も一般的に使用される埋め込みオプションは、L1正則化とL2正則化です。線形回帰モデルに2つの正則化手法を追加した後、それらはそれぞれリッジ回帰とラッソ回帰になりました。
#引入子包
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso
#构成模型组
models = [LinearRegression(),
Ridge(),
Lasso()]
#对于每个循环,并将返回的分数,返回结果result字典
result = dict()
for model in models:
model_name = str(model).split('(')[0]
scores = cross_val_score(model, X=train_X, y=train_y_ln, verbose=0, cv = 5, scoring=make_scorer(mean_absolute_error))
result[model_name] = scores
print(model_name + ' is finished')
#取出得分进行对比
result = pd.DataFrame(result)
result.index = ['cv' + str(x) for x in range(1, 6)]
result
モデルの調整
- お元気ですか
- グリッドチューニング
- ベイジアンチューニング