机器学习——线性回归

线性回归

任务:基于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 分钟前
PDF 表格抽取的三条技术路线对比:规则、库解析与版面识别
python·sqlite·自动化运维·geo·数据监测
tigershang11 分钟前
从工具到结构:工科数学的升阶之路
神经网络·机器学习·概率论
一只废狗狗狗狗狗狗狗狗狗28 分钟前
机器学习任务攻略
神经网络·机器学习
外收内放42 分钟前
Python与AI应用(项目开发实战:AI智能伴侣第一版)
python·学习·ai编程
绘梨衣54743 分钟前
慢SQL排查手册
python·sql
troy1281 小时前
告别 Copilot?Codex、Claude Code、DeepSeek Harness、Kimi、ChatGPT 哪个更适合本地化部署,更有性价比?
人工智能·python·开源软件
IvanCodes1 小时前
Python 文件操作(十二):文件与目录的读写
开发语言·python
YOLO_DATA1 小时前
无人机高速公路道路缺陷数据集 道路损伤数据集 公路裂缝识别 AI大疆数据集 10798期
人工智能·深度学习·yolo·机器学习·cnn
硅谷秋水4 小时前
RoboLab:用于分析机器人任务通才策略的高-保真仿真基准
机器学习·计算机视觉·语言模型·机器人
Y幽谷客9 小时前
Python加载本地大模型(Qwen3.5 8B)
python·大模型