線型回歸2

2021-10-08 11:19:51 字數 3118 閱讀 7765

import pandas as pd

from sklearn.linear_model import linearregression

from sklearn.model_selection import train_test_split

df = pd.read_excel('./datasets/house.xlsx')

feature = df

feature = feature.drop(labels=['y house price of unit area','no'],axis=1)

target = df['y house price of unit area']

x_train,x_test,y_train,y_test = train_test_split(feature,target,test_size=0.2,random_state=2020)

regression = linearregression()

regression.fit(x_train,y_train)

regression.score(x_test,y_test)

regression.coef_

regression.intercept_

[*zip(feature.columns,regression.coef_)]

from sklearn.metrics import mean_squared_error as mse

y_pred = regression.predict(x_test)

mse(y_test,y_pred)

y_test.min(),y_test.max()

from sklearn.metrics import r2_score

r2_score(y_test,y_pred)

import matplotlib.pyplot as plt

plt.plot(range(len(y_test)),sorted(y_test),c='black',label='y_true')

plt.plot(range(len(y_pred)),sorted(y_pred),c='red',label='y_pred')

plt.legend()

from sklearn.preprocessing import polynomialfeatures

p = polynomialfeatures(degree=2)

feature_p_2 = p.fit_transform(feature)

x_train,x_test,y_train,y_test = train_test_split(feature_p_2,target,test_size=0.2,random_state=2020)

regression = linearregression()

regression.fit(x_train,y_train)

y_pred = regression.predict(x_test)

from sklearn.metrics import r2_score

from sklearn.metrics import mean_squared_error

mean_squared_error(y_test,y_pred)

r2_score(y_test,y_pred)

p3 = polynomialfeatures(degree=3)

feature_p_3 = p3.fit_transform(feature)

x_train,x_test,y_train,y_test = train_test_split(feature_p_3,target,test_size=0.2,random_state=2020)

regression.fit(x_train,y_train)

y_pred = regression.predict(x_test)

mean_squared_error(y_test,y_pred)

r2_score(y_test,y_pred)

regression.coef_

欠擬合:不能很好的擬合資料。(模型過於簡單)

過擬合:訓練資料上能夠獲得比其他假設更好的擬合,但是在訓練資料以外的資料集上卻不能很好的擬合資料,此時認為這個假設出現了過擬合現象。(模型過於複雜)

欠擬合:

原因:模型學習到樣本的特徵太少

解決:增加樣本的特徵數量(多項式回歸)

如何給樣本新增高次的特徵資料呢?

使用sklearn.preprocessing.polynomialfeatures來進行更高次特徵的構造

它是使用多項式的方法來進行的,如果有a,b兩個特徵,那麼它的2次多項式為(1,a,b,a^2,ab, b^2)

polynomialfeatures有三個引數

degree:控制多項式的度

interaction_only: 預設為false,如果指定為true,上面的二次項中沒有a2和b2。

include_bias:預設為true。如果為false的話,那麼就不會有上面的1那一項

過擬合:

原因:原始特徵過多,存在一些嘈雜特徵。

解決:進行特徵選擇,消除關聯性大的特徵(很難做)

正則化之嶺回歸(掌握)

過擬合處理:正則化

from sklearn.linear_model import ridge

ridge = ridge(alpha=0.4)

ridge.fit(x_train,y_train)

ridge.coef_

模型的儲存和載入

from sklearn.externals import joblib

joblib.dump(model,『***.m』):儲存

joblib.load(『***.m』):載入

import pickle

with open(』./123.pkl』,『wb』) as fp:

pickle.dump(linner,fp)

with open(』./123.pkl』,『rb』) as fp:

linner = pickle.load(fp)

線型回歸詳解

回歸分析 regression analysis 用來建立方程模擬兩 個或者多個變數之間如何關聯 被 的變數叫做 因變數 dependent variable 輸出 output 被用來進行 的變數叫做 自變數 independent variable 輸入 input 一元線性回歸包含乙個自變數和...

2 邏輯回歸

邏輯回歸函式模型 1 訓練資料繪圖 cd d study ai data ex2 data load ex2data1.txt x data 1,2 y data 3 pos find y 1 y取1的所有行 plot x pos,1 x pos,2 k linewidth 2,markersize...

2 線性回歸

線性回歸演算法是使用線性方程對資料集進行擬合的演算法,是乙個非常常見的回歸演算法 就是經典的最小二乘法問題 最小化誤差的平方 均方誤差mse 公式 是mse開個根號,其實實質是一樣的。只不過用於資料更好的描述。例如 要做房價 每平方是萬元,我們 結果也是萬元。那麼差值的平方單位應該是千萬級別的。那我...