机器学习模型评价指标及可视化代码
时间: 2023-06-19 13:06:57 浏览: 204
机器学习模型的评价指标可以分为分类模型和回归模型两类。
## 分类模型评价指标
### 混淆矩阵
混淆矩阵是分类模型评价中最基本的指标,它用于描述分类模型预测结果和真实结果之间的关系。可以用以下代码实现混淆矩阵的可视化:
```python
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import confusion_matrix
def plot_confusion_matrix(y_true, y_pred, classes, normalize=False, cmap=plt.cm.Blues):
cm = confusion_matrix(y_true, y_pred)
if normalize:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
plt.imshow(cm, interpolation='nearest', cmap=cmap)
plt.title('Confusion matrix')
plt.colorbar()
tick_marks = np.arange(len(classes))
plt.xticks(tick_marks, classes, rotation=45)
plt.yticks(tick_marks, classes)
fmt = '.2f' if normalize else 'd'
thresh = cm.max() / 2.
for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
plt.text(j, i, format(cm[i, j], fmt),
horizontalalignment="center",
color="white" if cm[i, j] > thresh else "black")
plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')
```
### 准确率
准确率是分类模型评价中最常用的指标,用于衡量模型预测正确的样本占总样本数量的比例。可以用以下代码实现准确率的计算和可视化:
```python
from sklearn.metrics import accuracy_score
def plot_accuracy(y_true, y_pred):
acc = accuracy_score(y_true, y_pred)
plt.figure(figsize=(4, 4))
plt.title('Accuracy: {:.2%}'.format(acc))
sns.heatmap(confusion_matrix(y_true, y_pred), square=True, annot=True, fmt='d', cbar=False)
```
### 精确率、召回率和 F1 值
精确率是指模型预测为正例的样本中,真正为正例的样本占比;召回率是指真正为正例的样本中,被模型预测为正例的样本占比;F1 值是精确率和召回率的调和平均数。可以用以下代码实现精确率、召回率和 F1 值的计算和可视化:
```python
from sklearn.metrics import precision_score, recall_score, f1_score
def plot_precision_recall_f1(y_true, y_pred):
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
plt.figure(figsize=(4, 4))
plt.title('Precision: {:.2%}, Recall: {:.2%}, F1 Score: {:.2%}'.format(precision, recall, f1))
sns.heatmap(confusion_matrix(y_true, y_pred), square=True, annot=True, fmt='d', cbar=False)
```
## 回归模型评价指标
### 均方误差和均方根误差
均方误差是回归模型评价中最常用的指标之一,用于衡量模型预测值与真实值之间的差异。均方根误差是均方误差的平方根。可以用以下代码实现均方误差和均方根误差的计算和可视化:
```python
from sklearn.metrics import mean_squared_error
def plot_mse_rmse(y_true, y_pred):
mse = mean_squared_error(y_true, y_pred)
rmse = np.sqrt(mse)
plt.figure(figsize=(4, 4))
plt.title('MSE: {:.2f}, RMSE: {:.2f}'.format(mse, rmse))
plt.scatter(y_true, y_pred, alpha=0.5)
plt.plot([y_true.min(), y_true.max()], [y_true.min(), y_true.max()], 'k--')
plt.xlabel('True Values')
plt.ylabel('Predictions')
```
### R2 值
R2 值是回归模型评价中最常用的指标之一,用于衡量模型解释数据方差的能力,取值范围为 0 到 1。可以用以下代码实现 R2 值的计算和可视化:
```python
from sklearn.metrics import r2_score
def plot_r2(y_true, y_pred):
r2 = r2_score(y_true, y_pred)
plt.figure(figsize=(4, 4))
plt.title('R2 Score: {:.2%}'.format(r2))
plt.scatter(y_true, y_pred, alpha=0.5)
plt.plot([y_true.min(), y_true.max()], [y_true.min(), y_true.max()], 'k--')
plt.xlabel('True Values')
plt.ylabel('Predictions')
```
以上是一些常用的机器学习模型评价指标及可视化代码,可以根据实际需求进行调整和修改。
阅读全文