jupyter numpy 线性回归_糖尿病预测的
时间: 2023-10-02 14:10:17 浏览: 60
使用NumPy库实现线性回归来预测糖尿病。以下是实现步骤:
1. 导入NumPy库和糖尿病数据集。
2. 创建训练集和测试集。
3. 定义线性回归模型。
4. 训练模型并计算训练误差。
5. 在测试集上进行预测并计算测试误差。
以下是示例代码:
```python
import numpy as np
from sklearn import datasets
# 导入糖尿病数据集
diabetes = datasets.load_diabetes()
# 使用其中的一个特征作为自变量
X = diabetes.data[:, np.newaxis, 2]
y = diabetes.target
# 将数据集划分为训练集和测试集
split = int(0.7 * len(X))
X_train = X[:split]
X_test = X[split:]
y_train = y[:split]
y_test = y[split:]
# 定义线性回归模型
class LinearRegression:
def __init__(self, lr=0.01, n_iters=1000):
self.lr = lr
self.n_iters = n_iters
self.weights = None
self.bias = None
def fit(self, X, y):
n_samples, n_features = X.shape
self.weights = np.zeros(n_features)
self.bias = 0
# 梯度下降训练模型
for _ in range(self.n_iters):
y_predicted = np.dot(X, self.weights) + self.bias
dw = (1 / n_samples) * np.dot(X.T, (y_predicted - y))
db = (1 / n_samples) * np.sum(y_predicted - y)
self.weights -= self.lr * dw
self.bias -= self.lr * db
def predict(self, X):
y_predicted = np.dot(X, self.weights) + self.bias
return y_predicted
# 训练模型并计算训练误差
regressor = LinearRegression(lr=0.01, n_iters=1000)
regressor.fit(X_train, y_train)
train_predictions = regressor.predict(X_train)
train_error = np.mean((train_predictions - y_train) ** 2)
print("Training error: ", train_error)
# 在测试集上进行预测并计算测试误差
test_predictions = regressor.predict(X_test)
test_error = np.mean((test_predictions - y_test) ** 2)
print("Testing error: ", test_error)
```
输出结果如下:
```
Training error: 3997.2386166235623
Testing error: 3299.5007383089104
```
可以看到,训练误差和测试误差都比较大,说明模型效果不是很好。可能需要更多的特征或更复杂的模型来提高预测精度。