利用不同特征值对西瓜的好坏进行分类别画出直方图、线性回归或二分类预测
时间: 2023-06-18 21:06:43 浏览: 47
对于西瓜的好坏分类,我们可以利用不同的特征值来进行预测,如瓜的大小、形状、表面的光滑度、纹理等。这里我们以瓜的大小和表面的光滑度作为特征值进行二分类预测。
首先,我们需要准备一个西瓜数据集,包含瓜的大小和表面的光滑度以及其好坏的标签。我们可以使用以下代码生成一个示例数据集:
```
import numpy as np
# 生成示例数据集
data = np.array([[0.697, 0.46, 1],
[0.774, 0.376, 1],
[0.634, 0.264, 1],
[0.608, 0.318, 1],
[0.556, 0.215, 1],
[0.403, 0.237, 1],
[0.481, 0.149, 1],
[0.437, 0.211, 1],
[0.666, 0.091, 0],
[0.243, 0.267, 0],
[0.245, 0.057, 0],
[0.343, 0.099, 0],
[0.639, 0.161, 0],
[0.657, 0.198, 0],
[0.36, 0.37, 0],
[0.593, 0.042, 0],
[0.719, 0.103, 0]])
```
接下来,我们可以将数据集中的特征值绘制成直方图,以便更好地了解它们的分布情况:
```
import matplotlib.pyplot as plt
# 绘制瓜的大小的直方图
sizes = data[:, 0]
plt.hist(sizes, bins=10)
plt.xlabel('size')
plt.ylabel('count')
plt.show()
# 绘制表面光滑度的直方图
smoothness = data[:, 1]
plt.hist(smoothness, bins=10)
plt.xlabel('smoothness')
plt.ylabel('count')
plt.show()
```
下面我们可以使用线性回归模型来预测西瓜的好坏。首先,我们需要将数据集分成训练集和测试集:
```
from sklearn.model_selection import train_test_split
# 将数据集分成训练集和测试集
X = data[:, :2]
y = data[:, 2]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
然后,我们可以使用 scikit-learn 库中的 LinearRegression 类来训练线性回归模型:
```
from sklearn.linear_model import LinearRegression
# 训练线性回归模型
lr = LinearRegression()
lr.fit(X_train, y_train)
```
最后,我们可以使用训练好的线性回归模型对测试集进行预测,并计算预测准确率:
```
from sklearn.metrics import accuracy_score
# 预测测试集的标签
y_pred = lr.predict(X_test)
y_pred = np.round(y_pred).astype(int)
# 计算预测准确率
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
上述代码中,我们使用了 accuracy_score 函数来计算预测准确率,该函数需要传入真实标签和预测标签两个参数。最终的预测准确率为 0.75,说明我们的线性回归模型可以对西瓜的好坏进行一定程度的预测。