机器学习实战第八章 - 预测数值型数据:回归

一,线性回归

1,线性回归的特点

线性回归

  • 优点:结果易于理解,计算上不复杂
  • 缺点:对非线性的数据拟合不好
  • 适用数据类型:数值型和标称型数据

2,线性回归的要素

(1)线性回归模型:

h(xi)=xTiw

(2)目标函数:
J(w)=12mi=1m(yih(xi))
在Python中,我们可以使用matplotlib库绘制图形,pandas处理数据,numpy进行数学运算,以及自定义线性回归来进行预测。这里是一个简单的例子,假设你有一个名为`abalone_data.csv`的数据集,其中包含鲍鱼年龄以及其他可能影响年龄的因素。 首先,你需要导入所需的库并加载数据: ```python import pandas as pd import matplotlib.pyplot as plt import numpy as np # 加载数据 data = pd.read_csv('abalone_data.csv') ``` 然后,你可以选择一些特征作为输入X,比如壳长、壳高和重量等,年龄作为输出Y: ```python X = data[['length', 'diameter', 'weight']] # 假设长度、直径和重量是特征 y = data['rings'] # 假设rings列是目标变量,即年龄 ``` 接着,创建一个简单的线性回归: ```python class LinearRegression: def __init__(self, learning_rate=0.01, n_iterations=1000): self.learning_rate = learning_rate self.n_iterations = n_iterations self.weights = np.zeros(X.shape[1]) self.bias = 0 def predict(self, X): return np.dot(X, self.weights) + self.bias def fit(self, X, y): for _ in range(self.n_iterations): y_pred = self.predict(X) dw = (1 / len(y)) * np.dot(X.T, (y - y_pred)) db = (1 / len(y)) * np.sum(y - y_pred) self.weights -= self.learning_rate * dw self.bias -= self.learning_rate * db ``` 训练模并进行预测: ```python model = LinearRegression() model.fit(X, y) predictions = model.predict(X) ``` 为了可视化结果,你可以画出实际年龄和预测年龄之间的散点图: ```python plt.scatter(y, predictions) plt.xlabel('Actual Rings') plt.ylabel('Predicted Rings') plt.title('Age Prediction using Simple Linear Regression') plt.show() ``` 分析部分,你可以通过观察散点图和回归线的倾斜程度判断模的效果。如果大部分点接近直线,说明模拟合较好;若偏离较大,可能存在过拟合或欠拟合问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值