python - 在 K-means 中使用数组的问题
问题描述
请帮忙,我正在运行下面的代码来做一列的onehotencoder,然后我想将此列传递给我的数据集,然后运行K-means,但是当我传递信息时,我正在使用tolist() , 为了适应列,在运行 K-means 时,我遇到了以下问题: ValueError: setting an array element with a sequence。我搜索了一下,但我没有找到明确的解决方案......
我使用 45 列,起初我放入一个 Dataframe,但如果我有办法放入一个数组,每一列都会更有趣。
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder(sparse=True)
SP_results_one_hot0 = encoder.fit_transform(SP_results_Array[:,0].reshape(-1,1))
SP_results_one_hot1 = encoder.fit_transform(SP_results_Array[:,1].reshape(-1,1))
SP_results_one_hot2 = encoder.fit_transform(SP_results_Array[:,2].reshape(-1,1))
SP_results_one_hot3 = encoder.fit_transform(SP_results_Array[:,3].reshape(-1,1))
SP_results_one_hot4 = encoder.fit_transform(SP_results_Array[:,4].reshape(-1,1))
SP_results_one_hot5 = encoder.fit_transform(SP_results_Array[:,5].reshape(-1,1))
SP_results_one_hot6 = encoder.fit_transform(SP_results_Array[:,6].reshape(-1,1))
SP_results_one_hot7 = encoder.fit_transform(SP_results_Array[:,7].reshape(-1,1))
SP_results_one_hot8 = encoder.fit_transform(SP_results_Array[:,8].reshape(-1,1))
SP_results_one_hot9 = encoder.fit_transform(SP_results_Array[:,9].reshape(-1,1))
SP_results["Division Vendedor"] = SP_results_one_hot0.toarray().tolist()
SP_results["Tiempo en la Empresa"] = SP_results_one_hot1.toarray().tolist()
SP_results["Id Supervisor"] = SP_results_one_hot2.toarray().tolist()
SP_results["ID Region"] = SP_results_one_hot3.toarray().tolist()
SP_results["cargo"] = SP_results_one_hot4.toarray().tolist()
SP_results["address"] = SP_results_one_hot5.toarray().tolist()
SP_results["Idad"] = SP_results_one_hot6.toarray().tolist()
SP_results["sexo"] = SP_results_one_hot7.toarray().tolist()
SP_results["Nacion"] = SP_results_one_hot8.toarray().tolist()
SP_results["Tipo de vendedor"] = SP_results_one_hot9.toarray().tolist()
features =SP_results
from sklearn.cluster import KMeans
km = KMeans(n_clusters=i)
clusters = km.fit(features)
ValueError: setting an array element with a sequence.
解决方案
column
您可以使用get_dummies
和定义columns
列表,而不是单独处理每个。它会照顾它。以下是示例:
import pandas as pd
col_list = ["A","B","C"]
# data is pandas dataframe
data_new = pd.get_dummies(data, col_list)
根据kmean
需要input
的array
格式。你可以做这样的事情。
km = KMeans(n_clusters=i)
# data_new.values will convert the dataframe to array
clusters = km.fit(data_new.values)
希望这有帮助。
参考:
推荐阅读
- python - AttributeError:“浮动”对象没有属性“翻译”Python
- python - 从 MongoDB 中的字典数组中提取和更新字典
- javascript - 将参数从指令发送到AngularJS中的控制器
- multithreading - 3 threads per request
- c++ - std::atomic 到什么程度?
- c - 如果输入具有特定的大小和格式,为什么会忽略 fgets 调用?
- django - Django - “NoneType”对象没有属性“年份”
- outlook - Windows 10 上的 IBM Notes(又名 Lotus Notes) - 自动化对象错误
- cmake - cmake -> libpthread.so.0:添加符号时出错:命令行中缺少 DSO
- express - 将嵌套数组快速转换为字符串