python修复不了_python-如何修复cm.spectral(模块“ matplotlib.cm”...

在尝试运行一段Python代码时,遇到了matplotlib模块缺少'spectral'属性的问题。代码中使用了'cm.spectral'来为数据点着色,但该属性已被移除。尝试了替代方法如c.get_cmap, cm.nipy_spectral, plt.cm.spectral,但都出现错误。问题在于如何在新版matplotlib中替换'spectral'属性以正确显示颜色。" 131160304,18872956,Python取消Tab缩进技巧,"['Python编程', '代码规范', '编辑器设置']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我尝试从网站https://plot.ly/scikit-learn/plot-kmeans-silhouette-analysis/运行代码.当我运行它时,结果证明matplotlib模块已经不具有光谱属性.我读到inforum的另一个属性已被省略.我该如何更换?我已经尝试过c.get_cmp,cm.nipy_sepctral,plt.cm.spectral.但仍然是一个错误.这就是所有代码:

import plotly.plotly as py

import plotly.graph_objs as go

from plotly import tools

from __future__ import print_function

from sklearn.datasets import make_blobs

from sklearn.cluster import KMeans

from sklearn.metrics import silhouette_samples, silhouette_score

import matplotlib

import matplotlib.pyplot as plt

import matplotlib.cm as cm

import numpy as np

print(__doc__)

# This particular setting has one distinct cluster and 3 clusters placed close

# together.

X, y = make_blobs(n_samples=500,

n_features=2,

centers=4,

cluster_std=1,

center_box=(-10.0, 10.0),

shuffle=True,

random_state=1) # For reproducibility

range_n_clusters = [2, 3, 4, 5, 6]

figures = []

for n_clusters in range_n_clusters:

# Create a subplot with 1 row and 2 columns

fig = tools.make_subplots(rows=1, cols=2,

print_grid=False,

subplot_titles=('The silhouette plot for the various clusters.',

'The visualization of the clustered data.'))

# The 1st subplot is the silhouette plot

# The silhouette coefficient can range from -1, 1 but in this example all

# lie within [-0.1, 1]

fig['layout']['xaxis1'].update(title='The silhouette coefficient values',

range=[-0.1, 1])

# The (n_clusters+1)*10 is for inserting blank space between silhouette

# plots of individual clusters, to demarcate them clearly.

fig['layout']['yaxis1'].update(title='Cluster label',

showticklabels=False,

range=[0, len(X) + (n_clusters + 1) * 10])

# Initialize the clusterer with n_clusters value and a random generator

# seed of 10 for reproducibility.

clusterer = KMeans(n_clusters=n_clusters, random_state=10)

cluster_labels = clusterer.fit_predict(X)

# The silhouette_score gives the average value for all the samples.

# This gives a perspective into the density and separation of the formed

# clusters

silhouette_avg = silhouette_score(X, cluster_labels)

print("For n_clusters =", n_clusters,

"The average silhouette_score is :", silhouette_avg)

# Compute the silhouette scores for each sample

sample_silhouette_values = silhouette_samples(X, cluster_labels)

y_lower = 10

for i in range(n_clusters):

# Aggregate the silhouette scores for samples belonging to

# cluster i, and sort them

ith_cluster_silhouette_values = \

sample_silhouette_values[cluster_labels == i]

ith_cluster_silhouette_values.sort()

size_cluster_i = ith_cluster_silhouette_values.shape[0]

y_upper = y_lower + size_cluster_i

colors = cm.spectral(cluster_labels.astype(float) / n_clusters)

filled_area = go.Scatter(y=np.arange(y_lower, y_upper),

x=ith_cluster_silhouette_values,

mode='lines',

showlegend=False,

line=dict(width=0.5,

color=colors),

fill='tozerox')

fig.append_trace(filled_area, 1, 1)

# Compute the new y_lower for next plot

y_lower = y_upper + 10 # 10 for the 0 samples

# The vertical line for average silhouette score of all the values

axis_line = go.Scatter(x=[silhouette_avg],

y=[0, len(X) + (n_clusters + 1) * 10],

showlegend=False,

mode='lines',

line=dict(color="red", dash='dash',

width =1) )

fig.append_trace(axis_line, 1, 1)

# 2nd Plot showing the actual clusters formed

colors = matplotlib.colors.colorConverter.to_rgb(cm.spectral(float(i) / n_clusters))

colors = 'rgb'+str(colors)

clusters = go.Scatter(x=X[:, 0],

y=X[:, 1],

showlegend=False,

mode='markers',

marker=dict(color=colors,

size=4)

)

fig.append_trace(clusters, 1, 2)

# Labeling the clusters

centers_ = clusterer.cluster_centers_

# Draw white circles at cluster centers

centers = go.Scatter(x=centers_[:, 0],

y=centers_[:, 1],

showlegend=False,

mode='markers',

marker=dict(color='green', size=10,

line=dict(color='black',

width=1))

)

fig.append_trace(centers, 1, 2)

fig['layout']['xaxis2'].update(title='Feature space for the 1st feature',

zeroline=False)

fig['layout']['yaxis2'].update(title='Feature space for the 2nd feature',

zeroline=False)

fig['layout'].update(title="Silhouette analysis for KMeans clustering on sample data "

"with n_clusters = %d" % n_clusters)

figures.append(fig)

这是一个错误:

c:\python36\lib\site-packages\plotly\graph_objs\_deprecations.py:318: DeprecationWarning:

plotly.graph_objs.Font is deprecated.

Please replace it with one of the following more specific types

- plotly.graph_objs.layout.Font

- plotly.graph_objs.layout.hoverlabel.Font

- etc.

AttributeError Traceback (most recent call last)

in ()

47 y_upper = y_lower + size_cluster_i

48

---> 49 colors = cm.spectral(cluster_labels.astype(float) / n_clusters)

50

51 filled_area = go.Scatter(y=np.arange(y_lower, y_upper),

AttributeError: module 'matplotlib.cm' has no attribute 'spectral'

如何替换这些属性?尤其是线条color = cm.spectral(cluster_labels.astype(float)/ n_clusters)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值