【Python-ML】SKlearn库线性回归器LinearRegression
生活随笔
收集整理的這篇文章主要介紹了
【Python-ML】SKlearn库线性回归器LinearRegression
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# -*- coding: utf-8 -*-
'''
Created on 2018年1月24日
@author: Jason.F
@summary: 有監督回歸學習-基于最小二乘法構建線性回歸模型
最小二乘法(Ordinary Least Square,LOS),估計回歸曲線的參數,使得回歸曲線到樣本點垂直距離(殘差或誤差)的平方和最小
'''
import pandas as pd
import numpy as np
import time
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegressiondef lin_regplot(X,y,model):plt.scatter(X,y,c='blue')plt.plot(X,model.predict(X),color='red')return None
'''
class LinearRegressionGD(object):def __init__(self,eta=0.01,n_iter=20):self.eta=etaself.n_iter=n_iterdef fit(self,X,y):self.w_=np.zeros(1+X.shape[1])self.costs_=[]for _ in range(self.n_iter):output=self.net_input(X)errors=(y-output)self.w_[1:] += self.eta * X.T.dot(errors)self.w_[0] += self.eta * errors.sum()cost=(errors ** 2).sum() /2.0self.costs_.append(cost)return selfdef net_input(self,X):#calculate net inputreturn np.dot(X,self.w_[1:])+self.w_[0]def predict(self,X):#return class label after unit stepreturn self.net_input(X)
'''
if __name__ == "__main__": start = time.clock() #導入波士頓房屋數據集df=pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data',header=None,sep='\s+')df.columns=['CRIM','ZM','INDUS','CHAS','NOX','RM','AGE','DIS','RAD','TAX','PTRATIO','B','LSTAT','MEDV']X=df[['RM']].values#房間數y=df['MEDV'].values#房間價格'''#標準化sc_x=StandardScaler()sc_y=StandardScaler()X_std=sc_x.fit_transform(X)y_std=sc_y.fit_transform(y)#訓練lr=LinearRegressionGD()lr.fit(X_std,y_std)#梯度下降收斂驗證plt.plot(range(1,len(lr.costs_)+1),lr.costs_)plt.ylabel('SSE')plt.xlabel('Epoch')plt.show()#可視化房間數和房屋價格之間的關系lin_regplot(X_std, y_std, lr)plt.xlabel('Average number of rooms[RM](standardized)')plt.ylabel('Price in $1000\'s[MEDV](standardized)')plt.show()#預測num_rooms_std=sc_x.transform([5.0])price_std = lr.predict(num_rooms_std)print ('Price in $1000\'s:%.3f'%sc_y.inverse_transform(price_std))print ('Slope:%.3f'%lr.w_[1])print ('Intercept:%.3f'%lr.w_[0])'''#利用sklearn庫中的線性回歸模型slr=LinearRegression()slr.fit(X,y)print ('Slope:%.3f'%slr.coef_[0])print ('Intercept:%.3f'%slr.intercept_)lin_regplot(X, y, slr)plt.xlabel('Average number of rooms[RM](standardized)')plt.ylabel('Price in $1000\'s[MEDV](standardized)')plt.show()end = time.clock() print('finish all in %s' % str(end - start))
結果:
Slope:9.102 Intercept:-34.671 finish all in 44.0196931201總結
以上是生活随笔為你收集整理的【Python-ML】SKlearn库线性回归器LinearRegression的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python-ML】探索式数据分析ED
- 下一篇: 【Python-ML】SKlearn库R