机器学习——线性回归

线性回归

任务:基于0428.xlsx文件,建立线性回归模型,预测x = 3.5时对应的y值,评估模型表现

python 复制代码
# 加载数据
import pandas as pd
data = pd.read_excel('0428.xlsx')
data.head()

# data赋值
x = data.loc[:, 'x']
y = data.loc[:, 'y']
print(x, y)

# 可视化
from matplotlib import pyplot as plt
plt.figure(figsize=(3, 3))
plt.scatter(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Scatter Plot of x and y')
plt.show()

# 建立线性回归模型
from sklearn.linear_model import LinearRegression
lr_model = LinearRegression()

# 转换数组,防止报错(维度不匹配)
import numpy as np
x = np.array(x)
x = x.reshape(-1, 1)
y = np.array(y)
y = y.reshape(-1, 1)

# 模型训练
lr_model.fit(x, y)

# 检查预测是否准确(比较原数据和预测数据)
y_predict = lr_model.predict(x)
print(y_predict)

# 完成任务要求(3.5处的y,模型表现)
y_3_5 = lr_model.predict([[3.5]])
print(y_3_5)

# 计算最小二乘法里的a和b
a = lr_model.coef_
b = lr_model.intercept_
print(f'a: {a}, b: {b}')

# MSE以及R²分数(MSE越小越好,R²分数越接近1越好)
from sklearn.metrics import mean_squared_error, r2_score
mse = mean_squared_error(y, y_predict)
r2 = r2_score(y, y_predict)
print(f'MSE: {mse}, R² Score: {r2}')

# 画出y和y_predict的散点图
plt.figure(figsize=(3, 3))    
plt.scatter(y, y_predict)
plt.xlabel('Actual y')
plt.ylabel('Predicted y')
plt.title('Actual vs Predicted y')
plt.show()

多因子线性回归实战------------房价预测

建立线性回归模型,预测合理放假

(1) 以RM为输入变量,建立单因子模型,评估模型表现,可视化线性回归预测结果

(2) 以RM,LSTAT,PTRATIO为输入变量,建立多因子模型,评估模型表现

(3) 预测RM = 7,LSTAT=11,PTRATIO=20时的合理房价

python 复制代码
# 加载数据
import pandas as pd
data = pd.read_csv('housing.csv')
data.head()

# 多个图画在一起,观察不同特征与房价的关系
from matplotlib import pyplot as plt
plt.figure(figsize=(12, 5))
plt.subplot(1, 3, 1)
plt.scatter(data['RM'], data['MEDV'])
plt.xlabel('RM')
plt.ylabel('MEDV')
plt.title('RM vs MEDV')
plt.subplot(1, 3, 2)
plt.scatter(data['LSTAT'], data['MEDV'])
plt.xlabel('LSTAT')
plt.ylabel('MEDV')
plt.title('LSTAT vs MEDV')
plt.subplot(1, 3, 3)
plt.scatter(data['PTRATIO'], data['MEDV'])
plt.xlabel('PTRATIO')
plt.ylabel('MEDV')
plt.title('PTRATIO vs MEDV')
plt.show()

# 训练数据的赋值
X = data.loc[:,'RM']
Y = data.loc[:,'MEDV']

# 建立单因子模型
from sklearn.linear_model import LinearRegression
LR1 = LinearRegression()

# 数组维度转换
X = np.array(X)
X = X.reshape(-1, 1)
Y = np.array(Y)
Y = Y.reshape(-1, 1)

# 模型训练
LR1.fit(X, Y)

# 计算最小二乘法里的a和b
a = LR1.coef_
b = LR1.intercept_
print(f'a: {a}, b: {b}')

# MSE以及R²分数(MSE越小越好,R²分数越接近1越好)
from sklearn.metrics import mean_squared_error, r2_score
Y_predict = LR1.predict(X)
mse = mean_squared_error(Y, Y_predict)
r2 = r2_score(Y, Y_predict)
print(f'MSE: {mse}, R² Score: {r2}')

# 画图
plt.figure(figsize=(3, 3))
plt.scatter(Y, Y_predict)
plt.xlabel('Actual Y')
plt.ylabel('Predicted Y')   
plt.title('Actual vs Predicted Y')
plt.show()

# 多因子线性模型
x_multi = data.drop(['MEDV'], axis=1)

# 建立多因子线性模型
LR_multi = LinearRegression()

# 模型训练
LR_multi.fit(x_multi, Y)

# MSE以及R²分数(MSE越小越好,R²分数越接近1越好)
Y_multi_predict = LR_multi.predict(x_multi)
mse = mean_squared_error(Y, Y_multi_predict)
r2 = r2_score(Y, Y_multi_predict)
print(f'MSE: {mse}, R² Score: {r2}')

# 获取所有特征的系数
coefficients = LR_multi.coef_
print("各因子的系数:", coefficients)

# 任务三:预测RM = 7,LSTAT=11,PTRATIO=20时的合理房价
X_test = [[7, 11, 20]]
X_test = np.array(X_test).reshape(1, -1)
Y_test_predict = LR_multi.predict(X_test)
print(f'预测的房价: {Y_test_predict}')

数据集可在主页查找

数据集2:

https://gitee.com/baiyunyi/udacity-mlnd-boston-housing/tree/master

相关推荐
想会飞的蒲公英3 小时前
计算机怎样读取中文文本:编码、清洗与标准化
人工智能·python·自然语言处理
SeaTunnel4 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
深度研习笔记4 小时前
OpenCV工业视觉实战09|项目EXE打包+工控机无环境部署+后台常驻运行,彻底脱离Python环境,完成项目最终交付
python·opencv·webpack
CCPC不拿奖不改名4 小时前
大模型推理架构与开源生态知识整理
数据库·windows·python·架构·langchain·开源·github
Marst Code5 小时前
(python)2026Plotly 库评估:交互式可视化到底值不值得引入?
开发语言·python
databook5 小时前
当散点图不够用时:用 t-SNE 可视化多维数据
python·数据分析·数据可视化
我的xiaodoujiao7 小时前
快速学习Python基础知识详细图文教程9--函数进阶
开发语言·python·学习·测试工具
weixin_408099678 小时前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
去码头整点薯条ing8 小时前
某当网登录滑块【协议+OCR】
爬虫·python·ocr
人生百态,人生如梦9 小时前
情感交互仿生人从技术到落地构想3——技术交流贴(2026.7)
人工智能·机器学习·人机交互·交互·具身智能