我正在尝试将高尔距离实现应用于我的数据框。尽管它可以平稳地使用具有更多功能的同一数据集,但是这一次在我调用Gower距离函数时出现了错误。我从同一目录中的另一个.py代码导入Gower的函数。这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

import gower_function as gf

# Importing the dataset with pandas
dataset = pd.read_excel('input_partial.xlsx')
X = dataset.iloc[:, 1:].values
df = pd.DataFrame(X)
#obtaining gower distances of instances
Gower = gf.gower_distances(X)

执行此操作后,出现以下错误:
File "<ipython-input-10-6a4c39600b0e>", line 1, in <module>
Gower = gf.gower_distances(X)

File "C:\Users\...\Clustering\Section 24 - K-Means
Clustering\gower_function.py", line 184, in gower_distances
X_num = np.divide(X_num ,max_of_numeric,out=np.zeros_like(X_num),
where=max_of_numeric!=0)

TypeError: ufunc 'true_divide' output (typecode 'd') could not be coerced to
provided output parameter (typecode 'q') according to the casting rule
''same_kind''

我不明白如何在仅具有较少特征(列)的同一数据集上产生此错误。有谁能认出原因吗?

最佳答案

我遇到过同样的问题。看来,如果您所有的变量都是整数,则会产生此错误。因此,我将每个整数列都更改为字符串值。

cluster_data = cluster_data.astype(str)
cluster_data.dtypes.head()
这似乎可以修复该错误。

关于python - TypeError : ufunc 'true_divide' output (typecode 'd' ) could not be coerced to provided output parameter (typecode 'q' ),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50625975/

10-13 00:06