【问题标题】:PCA can't get color on scatterplotPCA 无法在散点图上获得颜色
【发布时间】:2018-11-25 10:42:08
【问题描述】:

我正在自己做一个小项目。我正在用 PCA 尝试这个东西。绘制图表后,我似乎无法将颜色显示出来。这些是我的代码的以下步骤。在此之前,我已经对数据进行了缩放和转换。缩放后我做了一个 PCA。这些是步骤。第一:

from sklearn.decomposition import PCA
pca= PCA(n_components= 2)
pca.fit(scaled_data)

x_pca= pca.transform(scaled_data)

principaldf= pd.DataFrame(data=x_pca, 
                      columns=['principal component 1', 
                              'principal component 2'])

在此之后,我结合了两个数据框并得到了这个。

new_df= principaldf.join(df_features)
new_df.head()

接下来我尝试使用以下代码绘制图形:

color= ['r','g']
plt.scatter(x_pca[:, 0], x_pca[:, 1],
     edgecolor='none', alpha=0.5, c= color)
plt.xlabel('component 1')
plt.ylabel('component 2')

我收到了这个错误

ValueError: 'c' 参数有 2 个元素,这是不可接受的 与大小为 261 的“x”一起使用,与大小为 261 的“y”一起使用。

任何人都可以提供建议或帮助吗?希望我的问题足够清楚。谢谢!

【问题讨论】:

  • 你想用什么变量来实际着色你的点?即哪些点是红色的,哪些是绿色的?
  • 你好@Simon,因为 Gender 喜欢红色和绿色。谢谢
  • @desertnaut 什么是完整的跟踪?它不是文本格式吗?哈哈。阅读您发送的链接,但不知道它是什么意思
  • 这意味着您的错误信息应该以文本的形式发布,而不是像您在这里所做的那样以屏幕截图的形式发布...跨度>

标签: python matplotlib pca


【解决方案1】:

你可以试试这样的:

Gender赋值:

new_df['Gender'] = new_df['Gender'].replace({'Male':0, 'Female':1})

然后使用颜色和 cmap 进行绘图:

plt.scatter(x_pca[:, 0], x_pca[:, 1], edgecolor='none', alpha=0.5,
            c=new_df['Gender'], cmap='RdYlGn')

当您传入像 ['r', 'g'] 这样的 2 项列表时,它不知道哪些点应该是哪种颜色

【讨论】:

  • 你好@Simon!我试过运行代码,但它返回了这个错误。 ValueError: 'c' 参数必须作为 mpl 颜色或要映射到颜色的数字有效。这里 c = 0 男性
  • 或者我可能一开始就弄错了整个算法?
猜你喜欢
  • 2020-05-29
  • 1970-01-01
  • 2021-10-29
  • 2018-01-14
  • 2018-04-09
  • 2018-06-03
  • 1970-01-01
  • 2017-10-12
  • 2014-09-10
相关资源
最近更新 更多