機械学習ノート(5)回帰モデル

1.線形回帰モデル

1.一般化線形モデルは、
XおよびYの線形結合である:
W、Y = 1 X 1 + W 2、X 2 ... + W N X N + B
coef_ = W係数行列は、[W1、W2 ... WN]、intercept_ありますは切片
2であり、通常の最小二乗法
は係数w =(w_1、…、w_p)の線形モデルに適合し、実際の観測データとデータセットの予測データ(推定値)の間の残差平方和が最小になるようにします。 。
ここに画像の説明を挿入
通常の最小二乗法は、データの相関の独立性に依存します。つまり、行列の各列は関連しており、計画行列は特異行列になる傾向があります。この機能により、最小二乗法の推定はランダムエラーに非常に敏感になります。大きな変動が生じる可能性があります。実際の運用では、収集される可能性のあるデータには高い相関関係があり、結果に深刻な影響を及ぼします。
2.1。関数の説明を使用して、関数の説明を
使用してZhihu Miss Appleyeをコピーします

最小二乗線形回帰:sklearn.linear_model.LinearRegression(fit_intercept = True、normalize = False、copy_X = True、n_jobs = 1)
パラメーター:
1。fit_intercept:ブール値、オプション、デフォルトはTrue。切片を計算するかどうかにかかわらず、デフォルトが計算されます。一元化されたデータを使用する場合
は、切片関係なく、Falseに設定することを検討できますこれは考慮事項であることに注意してください。通常、切片を考慮する必要があります。
2.正規化:ブール値、オプション、デフォルトはFalse。標準化スイッチ。デフォルトで閉じています。fit_interceptがFalseに設定されている場合、このパラメーターは自動的に無視されます。もしそうであれば
真、回帰は、入力パラメータを標準化します。(XX平均)/ || X ||、もちろん、モデルのトレーニング前に、標準化作業を置くことをお勧めします。それがFalseの場合
、あなたは前にsklearnを使用することができますモデルのトレーニング.preprocessing.StandardScalerは、標準化された処理を実行します。
3. copy_X:ブール、オプション、デフォルトはTrue。デフォルトはTrueです。それ以外の場合、Xは書き換えられます。
4. n_jobs:int、オプション、デフォルトは1int。デフォルトは1です。-1の場合、すべてのCPUがデフォルトで使用されますか??(このパラメーターが試されます)。
属性:
coef_:array、shape(n_features、)または(n_targets、n_features)。回帰係数(勾配)。
切片_ :切片
メソッド:
1、fit(X、y、sample_weight = None)
X:array、スパース行列[n_samples、n_features]
y:array [n_samples、n_targets]
sample_weight:array [n_samples]、各テストデータの重みも行列として渡されます(sample_weightはバージョン0.17の後に追加されます)。
2. Forecast(x):予測メソッド
値y_predを返します。3。get_params(deep = True):リグレッサの設定値を返します。4。score
(X、y、sample_weight = None):スコア関数。 1未満の値を返します。のスコアは0未満である可能性があります

1.2、コード

from sklearn import linear_model
import numpy as np
reg = linear_model.LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
x = np.array([[1,2], [2,3], [2, 4]])
y = np.array([1,2,3])
reg.fit(x,y)
print(reg.predict([[4,6]]))

2.ランダムフォレスト

1.ランダムフォレスト
ランダムフォレストは、単にバギング+デシジョンツリーであり、複数のデシジョンツリーで構成されるフォレストです。
2.
デシジョンツリーの確立一般的なデシジョンツリーアルゴリズム:

  • ID3、情報ゲインを使用して構築された決定木。
  • C4.5、情報獲得率を使用して確立された決定木。
  • カート、ジニ係数。

情報の取得が大きいほど、サンプルのエントロピーを減らす機能の能力が強くなります(混乱の程度を示します)。
3.バギングの使用
置換方法(ブートストラップ)を使用して元のデータからデータを抽出し、n個のサンプルをランダムに抽出し、k回のラウンドを実行し、k個のサンプルセットを取得し、k個のモデルを確立します(ランダムフォレストの場合は、決定木)分類問題の場合は投票法を使用して結果を決定し、回帰問題の場合は加重平均法に従って最終結果を取得します。
ps:ランダムフォレストによって選択される特徴の数は毎回異なり、各ツリーは必ずしもすべての特徴を備えているわけではありません。
4.APIを呼び出すために調整する必要のあるパラメーターは次のとおりです。

  • 決定木の数
  • 特徴的な属性の数
  • デシジョンツリーの深さ

5.コード表示(python)
(1)scikit-learnで実装:

#1、读取数据
import pandas as pd
import numpy as np

data = pd.read_csv(r'C:\Users\13056\Documents\Tencent Files\1305638814\FileRecv\123.csv', sep = ',',encoding="gbk")

X = np.array(data)[:748:,-3:-1]
y = np.array(data)[:748:,-1:]
x_train = X[:-200]
x_test = X[-200:]
y_train = y[:-200]
y_test = y[-200:]
title = ['1','2',"3"]
#一共750个样本,每个样本有3个特征

#2、随机森林
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn import metrics
import matplotlib.pyplot as plt

bt = RandomForestClassifier(n_estimators=2, max_depth=None)
'''
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, 
min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’,
max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, 
n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)
n_estimator是我们确定的决策树的数目
criterion建立决策树的方法,默认gini
max_depth:树的最大深度
min_samples_split分割内部节点所需要的最小样本数量
min_samples_leaf:需要在叶子节点上的最小样本数量
min_weight_fraction_leaf:一个叶子上的最大权重总和
random_state :使用随机生成树生成种子
'''
y_train *= 1000
bt.fit(x_train,y_train.astype('int'))
preds = bt.predict(x_test)/1000
plt.scatter(y_test,preds,alpha=0.5,s=6)
metrics.r2_score(y_test,preds)

クリック

おすすめ

転載: blog.csdn.net/weixin_45743162/article/details/114250563