线性回归的SK实现

SK实现线性回归

直接来干货

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston 
from sklearn.cross_validation import train_test_split
from sklearn.metrics import r2_score,mean_absolute_error,mean_squared_error
#  线性回归
from sklearn.linear_model import LinearRegression

X=load_boston().data
y=load_boston().target

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.1,random_state=33)

lin_reg=LinearRegression()
lin_reg.fit(X_train,y_train)

y_pre=lin_reg.predict(X_test)
print(lin_reg.score(X_test,y_test))
a=[]
for i in range(y_test.size):
    a.append(i)
x=np.array(a,dtype = int)
plt.plot(x,y_pre,color='r')
plt.plot(x,y_test,color='blue')
plt.axis([0,x.size,0,40])
plt.show()

效果图
在这里插入图片描述

继续都这样了,不如来个KNN回归比较
来了:

from sklearn.neighbors import KNeighborsRegressor
from sklearn.model_selection import GridSearchCV

param_grid=[
    {
        'weights':['uniform'],
        'n_neighbors':[i for i in range(1,11)]
    },
    {
        'weights':['distance'],
        'n_neighbors':[i for i in range(1,11)],
        'p':[1,2]
    }
]
knn_reg=KNeighborsRegressor()
grid_search=GridSearchCV(knn_reg,param_grid,verbose=1)
grid_search.fit(X_train,y_train)

KNN的参数比较多,所以可以用超参数搜索进行最佳的参数取值

grid_search.best_params_
knn_reg=KNeighborsRegressor(n_neighbors=6, p=1, weights='distance')
knn_reg.fit(X_train,y_train)
y_pre=knn_reg.predict(X_test)
print(knn_reg.score(X_test,y_test))

a=[]
for i in range(y_test.size):
    a.append(i)
x=np.array(a,dtype = int)

plt.plot(x,y_pre,color='r')
plt.plot(x,y_test,color='blue')
plt.axis([0,x.size,0,40])
plt.show()

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值