一元线性回归的Python实现

对鸢尾花数据集中的petal-length和petal-width两列数据进行回归分析

首先,导入相关包和数据。

# 导库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 数据及模型
from sklearn.datasets import load_iris
from sklearn.linear_model import LinearRegression
%matplotlib inline


# 导入数据集
iris = load_iris()
data = pd.DataFrame(iris.data)
data.columns = ['sepal-length','sepal-width','petal-length','petal-width']
data.head()
# data.shape

输出如下表:

数据集前五行
 sepal-lengthsepal-widthpetal-lengthpetal-width
0

5.1

3.51.40.2
14.93.01.40.2
24.73.21.30.2
34.63.11.50.2
45.03.61.40.2

对数据集中的petal-length和petal-width两列数据进行回归分析

# 处理数据
x = data['petal-length'].values
y = data['petal-width'].values
x = x.reshape(len(x),1)
y = y.reshape(len(y),1)
# 使用scikit-learn完成一元线性回归
clf = LinearRegression()
clf.fit(x,y)
pre = clf.predict(x)



# 可视化
plt.scatter(x,y,s = 50)
plt.plot(x,pre,'r-',linewidth = 2)
plt.xlabel('petal-length')
plt.ylabel('petal-width')
for idx,m in enumerate(x):
    plt.plot([m,m],[y[idx],pre[idx]],'g-')
plt.show()

输出结果如下图:

 

显示回归线的参数

# 回归线参数
print(u"系数",clf.coef_)
print(u"截距",clf.intercept_)
print(np.mean(y-pre)**2)

输出:

系数 [[0.41575542]]
截距 [-0.36307552]
1.013248007150544e-32

输入花萼长度,预测其花萼宽度

#对花萼长度为3.9的花,预测其花萼宽度
print(clf.predict([[3.9]]))

输出:

[[1.2583706]]

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值