本文介绍了Matplotlib Scatter - ValueError:RGBA 序列的长度应为 3 或 4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试为我的特征绘制图表,但我不断收到此错误:
I am trying to plot a graph for my features and I keep getting this error:
ValueError: RGBA sequence should have length 3 or 4
每当我只有 6 种形状时,代码都能完美运行,但现在我将其增加到 10 种,但它不起作用了?
The code worked perfectly whenever I only had 6 types of shapes but now that i've increased it to 10 it wont work?
如果我用 c = np.random.random((100, 4))
而不是 c=y
制作 c=c
它有效,但每个数据点都有不同的颜色.
If I make c=c
with c = np.random.random((100, 4))
instead of c=y
it works but then every data point has a different colour.
我的代码是:
features = ["Number of Sides", "Standard Deviation of Number of Sides/Perimeter",
"Standard Deviation of the Angles", "Largest Angle"]
features1 = ["Label"]
def Build_Data_Set():
data_df = pd.DataFrame.from_csv("AllMixedShapes2.csv")
#This line randomly shuffles the data so that the different types of training data get
#mixed up randomly to prevent the data being skewed
data_df = data_df.reindex(np.random.permutation(data_df.index))
X = np.array(data_df[features].values)
data_df2 = pd.DataFrame.from_csv("AllMixedShapes2.csv")
y = np.array(data_df2[features1].replace("Circle",0).replace("Equilateral Triangle",1)
.replace("Right Angle Triangle",2).replace("Acute Triangle",3)
.replace("Obtuse Triangle",4).replace("Square",5)
.replace("Parallelogram",6).replace("Rectangle",7)
.replace("Pentagon",8).replace("Seal",9).values.tolist())
return X,y
def SVC_Analysis():
test_size = 300
X,y = Build_Data_Set()
clf = svm.SVC(kernel = 'rbf', C = 1.0)
clf.fit(X[:test_size],y[:test_size])
correct_count = 0
for x in range(1, test_size+1):
if clf.predict(X[-x])[0] == y[-x]:
correct_count += 1
print("Accuracy:", (correct_count/test_size) * 100.00)
data_df = pd.DataFrame.from_csv("AllMixedShapes2.csv")
X1 = np.array(data_df[features2].values)
y1 = np.array(data_df[features3].values)
#w = clf.coef_[0]
#a = -w[0] / w[1]
xx = np.linspace(0,5)
yy = np.linspace(0,185)
h0 = plt.plot(xx,yy, "k-", label="non weighted")
plt.scatter(X1[:, 0],y1, c=y, cmap=plt.cm.Paired)
plt.ylabel("Maximum Angle (Degrees)")
plt.xlabel("Number Of Sides")
plt.title('Shapes')
plt.legend()
plt.show()
SVC_Analysis()
据我所知,问题与 c=y, cmap=plt.cm.Paired)
有关,但我不能确定,也找不到解决方案.
As far as I can tell the problem is to do with c=y, cmap=plt.cm.Paired)
but I cant be sure and I cant find a solution.
推荐答案
你的 y
数组看起来像
['3']
['9']
['0']
['5']
['5']
['Triangle']
['7']
['9']
['0']
['0']
...
实际上它应该看起来像
[3,9,0,5,5,5,7,9,0,0, ...]
这篇关于Matplotlib Scatter - ValueError:RGBA 序列的长度应为 3 或 4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!