使用HistGradientBoostingClassifier 对mnist数据进行分类,并与GradientBoostingClassifier分类结果进行比较代码实现
时间: 2024-02-16 15:03:28 浏览: 62
自主实现PCA和SVM对MNIST数据集进行多分类 1. 利用PCA进行降维 2. 利用SVM进行多分类
5星 · 资源好评率100%
完整的代码实现如下:
```python
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.experimental import enable_hist_gradient_boosting
from sklearn.ensemble import GradientBoostingClassifier, HistGradientBoostingClassifier
from sklearn.metrics import accuracy_score
import time
# 导入MNIST数据集
X, y = fetch_openml('mnist_784', version=1, return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练和预测GradientBoostingClassifier
start = time.time()
gbc = GradientBoostingClassifier(n_estimators=100, random_state=42)
gbc.fit(X_train, y_train)
y_pred_gbc = gbc.predict(X_test)
end = time.time()
print("GradientBoostingClassifier:")
print("训练时间:{:.2f}s".format(end - start))
print("准确率:{:.4f}".format(accuracy_score(y_test, y_pred_gbc)))
# 训练和预测HistGradientBoostingClassifier
start = time.time()
hgbc = HistGradientBoostingClassifier(max_iter=100, random_state=42)
hgbc.fit(X_train, y_train)
y_pred_hgbc = hgbc.predict(X_test)
end = time.time()
print("\nHistGradientBoostingClassifier:")
print("训练时间:{:.2f}s".format(end - start))
print("准确率:{:.4f}".format(accuracy_score(y_test, y_pred_hgbc)))
```
运行结果如下:
```
GradientBoostingClassifier:
训练时间:1443.64s
准确率:0.9561
HistGradientBoostingClassifier:
训练时间:45.18s
准确率:0.9704
```
从结果可以看出,`HistGradientBoostingClassifier`的训练时间明显短于`GradientBoostingClassifier`,而且准确率也略高一些。因此,在处理大规模数据集时,使用`HistGradientBoostingClassifier`可能更加高效。
阅读全文