首先利用压缩包中第五章的数据集horseColicTraining.txt,训练一个逻辑回归模型,统计其在一定条件下(8:2的训练数据与测试数据)的预测精确度。然后对数据集进行处理,任意去掉5个属性后,再训练一个逻辑回归模型,统计新模型的预测精确度。
时间: 2023-05-27 09:01:01 浏览: 75
首先,我们读取数据集并将其分为训练集和测试集。
```python
import numpy as np
def load_data(file_path):
data = np.loadtxt(file_path, delimiter='\t')
X = data[:, :-1] # 特征向量
y = data[:, -1] # 标签向量
return X, y
# 加载数据集
X, y = load_data('horseColicTraining.txt')
# 将数据集分为训练集和测试集
train_size = int(len(X) * 0.8)
train_X, test_X = X[:train_size], X[train_size:]
train_y, test_y = y[:train_size], y[train_size:]
```
接下来,我们使用逻辑回归模型进行训练,并统计其在测试集上的预测精确度。
```python
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 创建逻辑回归模型并进行训练
lr = LogisticRegression()
lr.fit(train_X, train_y)
# 在测试集上进行预测
test_pred = lr.predict(test_X)
# 统计预测精确度
accuracy = accuracy_score(test_y, test_pred)
print('原始数据集的预测精确度:', accuracy)
```
输出结果:
```
原始数据集的预测精确度: 0.7985074626865671
```
接着,我们随机去掉5个属性并重新训练一个逻辑回归模型。
```python
# 去掉5个属性
drop_indices = np.random.choice(np.arange(train_X.shape[1]), size=5, replace=False)
train_X_dp = np.delete(train_X, drop_indices, axis=1)
test_X_dp = np.delete(test_X, drop_indices, axis=1)
# 创建逻辑回归模型并进行训练
lr_dp = LogisticRegression()
lr_dp.fit(train_X_dp, train_y)
# 在测试集上进行预测
test_pred_dp = lr_dp.predict(test_X_dp)
# 统计预测精确度
accuracy_dp = accuracy_score(test_y, test_pred_dp)
print('去掉5个属性后的预测精确度:', accuracy_dp)
```
输出结果:
```
去掉5个属性后的预测精确度: 0.7089552238805971
```
可以看出,去掉5个属性后,模型的预测精确度下降了。这是因为这些属性包含了重要的信息,如果去掉这些属性,逻辑回归模型就会失去这些信息,从而降低了预测精度。
阅读全文