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開個根號,其實實質是一樣的。只不過用於資料更好的描述。例如 要做房價 每平方是萬元,我們 結果也是萬元。那麼差值的平方單位應該是千萬級別的。那我...