第1关:sklearn逻辑回归 - 手写数字识别
时间: 2024-10-14 13:01:57 浏览: 123
第一关:在scikit-learn库中,逻辑回归通常用于二分类问题,但在手写数字识别这样的多分类问题上也可以应用。针对手写数字识别任务,我们可以使用逻辑回归模型作为基础模型来进行初步学习,虽然它并非最高效的选择(因为逻辑回归更适合线性和非线性边界较简单的数据),但可以作为一个入门级的算法实践。
步骤大致如下:
1. **导入所需的库**:首先加载必要的机器学习库,如`sklearn`, `numpy`, 和 `matplotlib`。
```python
import sklearn.datasets as datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
```
2. **加载MNIST数据集**:这个数据集中包含了60000张训练图像和10000张测试图像,每张都是28x28像素的灰度图像。
```python
digits = datasets.load_digits()
X = digits.data
y = digits.target
```
3. **预处理数据**:对输入特征进行标准化处理,以便于模型训练。
```python
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
```
4. **划分训练集和测试集**:
```python
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
```
5. **创建并训练逻辑回归模型**:
```python
lr = LogisticRegression(max_iter=1000) # 调整迭代次数以防止过早停止
lr.fit(X_train, y_train)
```
6. **评估模型**:
```python
accuracy = lr.score(X_test, y_test)
print(f"Accuracy on test set: {accuracy * 100:.2f}%")
```
7. **可视化预测结果**(仅作示例,逻辑回归无法直接展示决策边界):
```python
# 可能需要使用其他方法如KNN或SVM来画出决策边界
```
阅读全文