機器學習_ML_LinearRegression
原文連結簡單線性迴歸對於離群值很敏感,對離群值的處理除了刪除之外,也可以透過RANSACRegressor來處理。
透過scikit-learn來執行LinearRegression的話,是無法透過梯度下降來求解的。
這部份如果有興趣研究的話,也可以到github去看程式碼!
或是參考同好的博客
基本上簡單線性迴歸就是我們國高中所學的線性方程式
y=ax+b
a就是求出來的斜率,而b就是x=0的時候的截距,
而預測的部份其實就是套公式去求解而以!
IMPORT
from sklearn.linear_model import LinearRegression
CLASS
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
參數說明
copy_X
default True {True, False}fit_intercept
是否計算模型截距n_jobs
default 1CPU的核心使用數,設定-1代表火力全開。
normalize
default False {True, False}當fit_intercept=False的時候,此參數將被忽略。
True:X會做L2的正規化
方法
fit
fit(X, y, sample_weight=None)
適合、訓練該模型get_params
get_params(deep=True)
取得模型參數predict
使用適合後的模型去預測,可放入單值也可以放入陣列。predict(X)
score
score(X, y, sample_weight=None)
決定系數跟透過r2_score計算出的值相同,愈接近1的值代表愈適合!
from sklearn.metrics import r2_score
r2_score(y_train, y_train_pred)
set_params
設定模型參數屬性
coef_
斜率intercept_
截距範例
用波士頓房地產來做範例import pandas as pd
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data', header=None, sep='\s+')
df.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS',
'NOX', 'RM', 'AGE', 'DIS', 'RAD',
'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
# 驗證一下資料有沒有進來
df.head()
x = df[['RM']].values
y = df['MEDV'].values
from sklearn.linear_model import LinearRegression
slr = LinearRegression()
slr.fit(x, y)
slr.coef_[0] # 斜率
slr.intercept_ # 截距
slr.score(x, y) # r2
實務上不會全數據一起導入,只是一個簡單的sample,如需要,可以透過import train_test_split來做數據分割from sklearn.model_selection import train_test_split
X = df[['RM']].values
y = df['MEDV'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
沒有留言:
張貼留言