plt.scatter(x, y, color='red', marker='*', markersize=18) AttributeError: 'PathCollection' object has no property 'markersize'
时间: 2023-06-13 15:09:13 浏览: 235
这个错误提示表明,您尝试在一个 `PathCollection` 对象上使用 `markersize` 属性,但是 `PathCollection` 对象没有这个属性。这通常是因为您使用了错误的参数或者在使用参数时出现了错误。
可能的原因和解决方案如下:
1. 您可能没有指定 `s` 参数,或者 `s` 参数的值不是一个标量。请确保您在调用 `scatter` 函数时指定了 `s` 参数,并且 `s` 参数的值是一个标量值(例如整数或浮点数)。
2. 您可能在指定 `marker` 参数时使用了错误的字符串。请确保您在调用 `scatter` 函数时指定了正确的 `marker` 字符串,例如 `'*'`、`'o'`、`'+'` 等等。
3. 您可能在调用 `scatter` 函数之后,尝试修改 `PathCollection` 对象的属性。请注意,`scatter` 函数返回的是一个 `PathCollection` 对象,您可以使用 `set_*` 方法来设置其属性,例如 `set_markersize` 方法来设置标记的大小。
希望这些解决方案能够帮助您解决问题。
相关问题
KNN=KNearestNeighbor() KNN.train(X_train, y_train) y_pred = KNN.predict(X_test, k=6) accuracy = np.mean(y_pred == y_test) print('测试集预测准确率:%f' % accuracy) plt.scatter(X_setosa_train[:, 0], X_setosa_train[:, 2], color='red', marker='o', label='setosa_train') plt.scatter(X_versicolor_train[:, 0], X_versicolor_train[:, 2], color='blue', marker='^', label='versicolor_train') plt.scatter(X_virginica_train[:, 0], X_virginica_train[:, 2], color='green', marker='s', label='virginica_train') plt.scatter(X_setosa_test[:, 0], X_setosa_test[:, 2], color='y', marker='o', label='setosa_test') plt.scatter(X_versicolor_test[:, 0], X_versicolor_test[:, 2], color='y', marker='^', label='versicolor_test') plt.scatter(X_virginica_test[:, 0], X_virginica_test[:, 2], color='y', marker='s', label='virginica_test') plt.xlabel('sepal length') plt.ylabel('petal length') plt.legend(loc = 4) plt.show()注释每一行代码
以下是对每一行代码的注释:
```python
# 初始化 KNN 模型
KNN = KNearestNeighbor()
# 使用训练集数据进行模型训练
KNN.train(X_train, y_train)
# 使用测试集数据进行预测,并指定 k=6
y_pred = KNN.predict(X_test, k=6)
# 计算模型的准确率
accuracy = np.mean(y_pred == y_test)
# 绘制散点图,展示不同种类的花的数据分布
plt.scatter(X_setosa_train[:, 0], X_setosa_train[:, 2], color='red', marker='o', label='setosa_train')
plt.scatter(X_versicolor_train[:, 0], X_versicolor_train[:, 2], color='blue', marker='^', label='versicolor_train')
plt.scatter(X_virginica_train[:, 0], X_virginica_train[:, 2], color='green', marker='s', label='virginica_train')
plt.scatter(X_setosa_test[:, 0], X_setosa_test[:, 2], color='y', marker='o', label='setosa_test')
plt.scatter(X_versicolor_test[:, 0], X_versicolor_test[:, 2], color='y', marker='^', label='versicolor_test')
plt.scatter(X_virginica_test[:, 0], X_virginica_test[:, 2], color='y', marker='s', label='virginica_test')
# 设置 x 轴和 y 轴的标签
plt.xlabel('sepal length')
plt.ylabel('petal length')
# 显示图例,并设置其位置
plt.legend(loc = 4)
# 显示图形
plt.show()
```
X_train, X_test, y_train, y_test = train_test_split(data[['Returns','Variance']],data.cluster) ##plt.scatter(X_train, y_train, marker='+',color='green') ##plt.scatter(X_test, y_test, marker='*',color='purple')#ValueError: x and y must be the same size model = LogisticRegression() model.fit(X_train,y_train) y_predicted = model.predict(X_test) model.score(X_test,y_test)
这段代码是一个完整的机器学习流程,首先使用train_test_split函数将数据集分为训练集和测试集,其中训练集包含了Returns和Variance两个特征,测试集包含了对应的聚类标签cluster。然后使用LogisticRegression模型进行训练,使用训练好的模型对测试集进行预测,并计算模型在测试集上的准确率得分。
在代码中,由于plt.scatter(X_train, y_train, marker='+',color='green')和plt.scatter(X_test, y_test, marker='*',color='purple')这两行代码被注释掉了,因此不会绘制出训练集和测试集的散点图。而报错的原因是plt.scatter(X_train, y_train, marker='+',color='green')和plt.scatter(X_test, y_test, marker='*',color='purple')这两行代码中的X_train, y_train, X_test和y_test的维度不一致,不能绘制散点图。
阅读全文