How to resolve y_true_val = list(y_true.values()) AttributeError: 'list' object has no attribute 'values'?
How to resolve y_true_val = list(y_true.values()) AttributeError: 'list' object has no attribute 'values'?
我正在尝试为 Zachary 空手道俱乐部数据集编写代码。现在我卡在了行
y_true_val = list(y_true.values())
我的代码:
nmi_results = []
ars_results = []
y_true_val = list(y_true.values())
# Append the results into lists
for y_pred in results:
nmi_results.append(normalized_mutual_info_score(y_true_val, y_pred))
ars_results.append(adjusted_rand_score(y_true_val, y_pred))
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, sharey=True, figsize=(16, 5))
x = np.arange(len(y_pred))
avg = [sum(x) / 2 for x in zip(nmi_results, ars_results)]
xlabels = list(algorithms.keys())
sns.barplot(x, nmi_results, palette='Blues', ax=ax1)
sns.barplot(x, ars_results, palette='Reds', ax=ax2)
sns.barplot(x, avg, palette='Greens', ax=ax3)
ax1.set_ylabel('NMI Score')
ax2.set_ylabel('ARS Score')
ax3.set_ylabel('Average Score')
# # Add the xlabels to the chart
ax1.set_xticklabels(xlabels)
ax2.set_xticklabels(xlabels)
ax3.set_xticklabels(xlabels)
# Add the actual value on top of each bar
for i, v in enumerate(zip(nmi_results, ars_results, avg)):
ax1.text(i - 0.1, v[0] + 0.01, str(round(v[0], 2)))
ax2.text(i - 0.1, v[1] + 0.01, str(round(v[1], 2)))
ax3.text(i - 0.1, v[2] + 0.01, str(round(v[2], 2)))
# Show the final plot
plt.show()
输出:
y_true_val = list(y_true.values())
AttributeError: 'list' object has no attribute 'values'
希望对您有所帮助!
先来了解一下错误:
如评论中所述 attribute
当您尝试访问该对象的调用方法中未定义的方法时会发生错误。
例如,在 py 字符串对象中,我们有 .lower()
可用于生成小写的新字符串(从 ABC
到 abc
)。如果您尝试为整数对象访问此 .lower()
,您将收到属性错误。
如何解决这个错误?
使用 python 内置 type 运算符来确定您拥有哪种 datatype/object。如果它是一个列表,那么你不必做任何 .values()
print(type(y_true))
使用 python 内置 dir 运算符来了解哪些运算符可用于此对象。如果您在此处看到 values
运算符,则仅应用 .values()
运算符。
print(dir(y_true))
仍然不确定,或者 运行 出现其他错误尝试 print(y_true)
看看你有什么。
我正在尝试为 Zachary 空手道俱乐部数据集编写代码。现在我卡在了行
y_true_val = list(y_true.values())
我的代码:
nmi_results = []
ars_results = []
y_true_val = list(y_true.values())
# Append the results into lists
for y_pred in results:
nmi_results.append(normalized_mutual_info_score(y_true_val, y_pred))
ars_results.append(adjusted_rand_score(y_true_val, y_pred))
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, sharey=True, figsize=(16, 5))
x = np.arange(len(y_pred))
avg = [sum(x) / 2 for x in zip(nmi_results, ars_results)]
xlabels = list(algorithms.keys())
sns.barplot(x, nmi_results, palette='Blues', ax=ax1)
sns.barplot(x, ars_results, palette='Reds', ax=ax2)
sns.barplot(x, avg, palette='Greens', ax=ax3)
ax1.set_ylabel('NMI Score')
ax2.set_ylabel('ARS Score')
ax3.set_ylabel('Average Score')
# # Add the xlabels to the chart
ax1.set_xticklabels(xlabels)
ax2.set_xticklabels(xlabels)
ax3.set_xticklabels(xlabels)
# Add the actual value on top of each bar
for i, v in enumerate(zip(nmi_results, ars_results, avg)):
ax1.text(i - 0.1, v[0] + 0.01, str(round(v[0], 2)))
ax2.text(i - 0.1, v[1] + 0.01, str(round(v[1], 2)))
ax3.text(i - 0.1, v[2] + 0.01, str(round(v[2], 2)))
# Show the final plot
plt.show()
输出:
y_true_val = list(y_true.values())
AttributeError: 'list' object has no attribute 'values'
希望对您有所帮助!
先来了解一下错误:
如评论中所述
attribute
当您尝试访问该对象的调用方法中未定义的方法时会发生错误。例如,在 py 字符串对象中,我们有
.lower()
可用于生成小写的新字符串(从ABC
到abc
)。如果您尝试为整数对象访问此.lower()
,您将收到属性错误。
如何解决这个错误?
使用 python 内置 type 运算符来确定您拥有哪种 datatype/object。如果它是一个列表,那么你不必做任何
.values()
print(type(y_true))
使用 python 内置 dir 运算符来了解哪些运算符可用于此对象。如果您在此处看到
values
运算符,则仅应用.values()
运算符。print(dir(y_true))
仍然不确定,或者 运行 出现其他错误尝试
print(y_true)
看看你有什么。