简单的线性回归

博客展示了简单线性回归的代码结果,虽未呈现具体代码内容,但聚焦于线性回归这一信息技术领域的重要内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import numpy as np
import matplotlib.pyplot as plt

# X 表示训练数据的特征, 即披萨的直径
X = np.array([[6], [8], [10], [14], [18]])
# X = np.array([6, 8, 10, 14, 18])
# 让X变成只有一列, 行数不知道多少(-1表示)
# X = X.reshape(-1, 1)

# y 表示披萨价格的向量
y = [7, 9, 13, 17.5, 18]

plt.figure()
plt.title("Pizza price plotted against diameter")
plt.xlabel("Diameter in inches")
plt.ylabel("Price in dollars")
# x轴数据,y轴数据,format_string控制曲线的格式字串
# format_string 由颜色字符,风格字符(省略),和标记字符
plt.plot(X, y, "k.")
plt.axis([0, 25, 0, 25])
plt.grid(True)
plt.show()

代码结果:

import numpy as np
# 线性回归
from sklearn.linear_model import LinearRegression

# X 表示训练数据的特征, 即披萨的直径
X = np.array([[6], [8], [10], [14], [18]])

# y 表示披萨价格的向量
y = [7, 9, 13, 17.5, 18]

# 创建一个估计器实例
model = LinearRegression()
# 用训练数据拟合模型
model.fit(X, y)
# 可以是一个列表(预测多个披萨)
test_pizza = np.array([[12]])
# 预测一个直径为12的披萨的价格(列表)
predicted_price = model.predict(test_pizza)[0]
print('A 12" pizza should cost: $%.2f' % predicted_price)

# 2.3计算残差平方和
residual = np.mean((model.predict(X) - y) ** 2)
print('Residual sum of squares: %.2f' % residual)

代码结果:

A 12" pizza should cost: $13.68
Residual sum of squares: 1.75
"""求方差"""
import numpy as np

# X 表示训练数据的特征, 即披萨的直径
X = np.array([[6], [8], [10], [14], [18]])

# 求x平均值
x_bar = X.mean()

# 求方差, 贝塞尔校正(样本数量减一)
variance = ((X - x_bar) ** 2).sum() / (X.shape[0] - 1)
# variance = np.sum((X - x_bar) ** 2) / (X.shape[0] - 1)
print(variance)

# 2.5使用numpy中的var的方法计算方差, 参数ddof可以设置贝塞尔校正
variance = np.var(X, ddof=1)
print(variance)

代码结果:

23.2
23.2
"""求协方差"""
import numpy as np

# X 表示训练数据的特征, 即披萨的直径
X = np.array([[6], [8], [10], [14], [18]])

# y 表示披萨价格的向量
y = np.array([7, 9, 13, 17.5, 18])

# 求x平均值
x_bar = X.mean()

# 求y平均值
y_bar = y.mean()

# 求协方差
covariance = np.multiply((X - x_bar).transpose(), y - y_bar).sum() / (X.shape[0] - 1)
# covariance = np.sum(np.multiply((X - x_bar).transpose(), y - y_bar)) / (X.shape[0] -1)
print(covariance)

# 使用numpy中的cov的方法计算协方差
variance = np.cov(X.transpose(), y)[0][1]
print(variance)

代码结果:

22.65
22.650000000000002
"""评价模型"""
import numpy as np
from sklearn.linear_model import LinearRegression

# X 表示训练数据的特征, 即披萨的直径
X_train = np.array([[6], [8], [10], [14], [18]])
# y 表示披萨价格的向量
y_train = [7, 9, 13, 17.5, 18]

# X 表示测试数据的特征, 即披萨的直径
X_test = np.array([[8], [9], [11], [16], [12]])
# y 表示披萨价格的向量
y_test = [11, 8.5, 15, 18, 11]

model = LinearRegression()
model.fit(X_train, y_train)
# LinearRegression类的score方法返回模型的R方值
r_squared = model.score(X_test, y_test)
print(r_squared)

代码结果:

0.6620052929422553
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值