分别用逻辑回归、SVM构建模型并评估5000个手写数字的训练集
时间: 2023-12-10 10:41:04 浏览: 84
首先,我们需要对5000个手写数字的训练集进行预处理,将其转化为适合模型训练的格式。一般来说,我们会将每个数字的图像转换成一个向量,每个维度表示图像中的一个像素点的亮度值。
接下来,我们可以按照以下步骤使用逻辑回归和SVM构建模型:
1. 导入所需的库和数据集,并将数据集划分为训练集和测试集。
2. 对训练集进行特征缩放,以确保所有特征都具有相同的重要性。
3. 使用逻辑回归或SVM算法来训练模型,并使用交叉验证来选择最佳的超参数。
4. 使用测试集来评估模型的性能,计算准确率、召回率、F1分数等指标。
下面是使用Python和Scikit-learn库实现逻辑回归和SVM的代码示例:
```python
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 加载手写数字数据集
digits = load_digits()
# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.3, random_state=42)
# 特征缩放
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
# 逻辑回归模型
logreg = LogisticRegression()
logreg.fit(X_train_scaled, y_train)
y_pred_logreg = logreg.predict(X_test_scaled)
# SVM模型
svm = SVC(kernel='rbf', C=1, gamma=0.1)
svm.fit(X_train_scaled, y_train)
y_pred_svm = svm.predict(X_test_scaled)
# 模型评估
print('Logistic Regression:')
print('Accuracy:', accuracy_score(y_test, y_pred_logreg))
print('Precision:', precision_score(y_test, y_pred_logreg, average='micro'))
print('Recall:', recall_score(y_test, y_pred_logreg, average='micro'))
print('F1 Score:', f1_score(y_test, y_pred_logreg, average='micro'))
print('SVM:')
print('Accuracy:', accuracy_score(y_test, y_pred_svm))
print('Precision:', precision_score(y_test, y_pred_svm, average='micro'))
print('Recall:', recall_score(y_test, y_pred_svm, average='micro'))
print('F1 Score:', f1_score(y_test, y_pred_svm, average='micro'))
```
在实际应用中,我们可以通过调整不同的超参数、使用不同的特征选择方法等方式来进一步优化模型的性能。
阅读全文