sklearn的基本教程
http://www.itdecent.cn/p/6ada34655862
sklearn官網(wǎng)
https://scikit-learn.org/stable/
在Python中,可以使用Numpy和sklearn包來實現(xiàn)線性擬合。
安裝Anaconda后
下載sklearn和numpy包,打開cmd
pip install numpy
pip install sklearn
首先準備好房價和面積的數(shù)據(jù)集
數(shù)據(jù)集
左邊是面積,右邊是價格
1000,168
792,184
1260,197
1262,220
1240,228
1170,248
1230,305
1255,256
1194,240
1450,230
1481,202
1475,220
1482,232
1484,460
1512,320
1680,340
1620,240
1720,368
1800,280
4400,710
4212,552
3920,580
3212,585
3151,590
3100,560
2700,285
2612,292
2705,482
2570,462
2442,352
2387,440
2292,462
2308,325
2252,298
2202,352
2157,403
2140,308
4000,795
4200,765
3900,705
3544,420
2980,402
4355,762
3150,392
3025,320
3450,350
4402,820
3454,425
890,272
下載成功后,打開anaconda下面的Spyder
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
datasets_X = []
datasets_Y = []
#導(dǎo)入數(shù)據(jù)
f = open('prices.txt','r')
lines = f.readlines()#讀取全部數(shù)據(jù)
f.close()
#
for line in lines:
items = line.strip().split(',')
datasets_X.append(int(items[0]))#添加面積
datasets_Y.append(int(items[1]))#添加房價
n = len(datasets_X) # 樣本數(shù)目
#將面積X轉(zhuǎn)為n*1的二維數(shù)組,將房價Y轉(zhuǎn)為數(shù)組
datasets_X = np.array(datasets_X).reshape([n,1])
datasets_Y = np.array(datasets_Y)
print(datasets_X,datasets_Y)
#找到最小和最大的面積
minX = min(datasets_X)
maxX = max(datasets_X)
#以數(shù)據(jù)datasets_X的最大值和最小值為范圍,建立等差數(shù)列,方便后續(xù)畫圖
X = np.arange(minX,maxX).reshape([-1,1])
#print(minX,maxX,X)
#條用線性回歸模型,建立回歸方程
linear = linear_model.LinearRegression()
#擬合數(shù)據(jù)
linear.fit(datasets_X,datasets_Y)
#print('系數(shù)',linear.coef_)
#print('截距',linear.intercept_)
#繪制數(shù)據(jù)點
plt.scatter(datasets_X,datasets_Y,color='red')
#plot函數(shù)繪制歸回線
plt.plot(X,linear.predict(X),color = 'blue')
#橫軸和縱軸的標簽
plt.xlabel('Area')
plt.ylabel('Price')
plt.show()
結(jié)果:
