Python 功能列包含列表-如何解析为k-means算法
我正在尝试将数据解析为sklearn.cluster.KMeans。下面是一个显示我的数据的示例:Python 功能列包含列表-如何解析为k-means算法,python,pandas,numpy,scikit-learn,k-means,Python,Pandas,Numpy,Scikit Learn,K Means,我正在尝试将数据解析为sklearn.cluster.KMeans。下面是一个显示我的数据的示例: import sklearn.cluster import numpy as np d = {'ID' : pd.Series([1, 2, 1]), 'X1' : pd.Series([111, 222, 333]), 'X2' : pd.Series([[0,1], [1,2], [2,4]]), 'X3' : pd.Series([111, 222, 333
import sklearn.cluster
import numpy as np
d = {'ID' : pd.Series([1, 2, 1]),
'X1' : pd.Series([111, 222, 333]),
'X2' : pd.Series([[0,1], [1,2], [2,4]]),
'X3' : pd.Series([111, 222, 333])
}
df1 = (pd.DataFrame(d))
labels = []
for index, row in df1.iterrows():
labels.append(row['ID'])
print(df1)
ID X1 X2 X3
0 1 111 [0, 1] 111
1 2 222 [1, 2] 222
2 1 333 [2, 4] 333
print(labels)
[1, 2, 1]
这就是我试图将数据提取到要素中的方式:
features = np.array([x[1:] for x in df1])
clust_centers = 2
model = sklearn.cluster.k_means(features, clust_centers)
这将返回以下错误:
ValueError: could not convert string to float: D
问题:
如何使用此数据格式作为k-means的输入
ID X1 X2 X3
0 1 111 [0, 1] 111
1 2 222 [1, 2] 222
2 1 333 [2, 4] 333
这种格式怎么样?这可以用作输入吗
ID X1 X2 X3
0 1 111 [0:3, 1:4] 111
1 2 222 [1:2, 2:3] 222
2 1 333 [2:2, 4:2] 333
编辑-有关要素类型的详细信息
该数据集是比特币交易网络的摘录
标签:
id(int)-这是一个160位的散列。i、 e.我已转换为整数id值的比特币地址
特点:
数字的
价值(浮动):交易中发送或接收的比特币金额
页面排名(浮动):事务的页面排名
度数(浮动):事务中节点的度数
出度(浮动):事务中节点的出度
分类的
列表中的标记(int):标记表示六个类别(赌博、服务、金融等)之一,可以表示为字符串或整数。我正在聚合标记,因此使用列表表示
样本行
行ID PAGERANK IN_DEGREE OUT \u标记中的度数值
767 7504 1.500 2 1 0.0012[1,2][1,5]
这里的目标是预测新用户可能与之交互的类别
非常感谢 查看
打印(功能)
的输出。您将每个列名中除第一个字符外的所有字符作为您的特性,我认为您不打算这样做。我想您需要的是features=df1.values[:,1::
。当你尝试进行聚类时,这仍然会给你一个错误,但这是一个错误,因为在你的数据中有一个列表,这正是你的问题想要得到的。你的权利,这不是我打算做的。我想我要找的是id
作为标签(我有)的列表,然后为k-means输入生成样本x特征
矩阵我假设这是k-均值的正确输入。均值仅适用于欧几里德距离。X2
中元素之间的距离是多少?X2
特征是分类值。我已将标记转换为整数表示,这意味着您为它们指定了任意数字。这并不能让他们得到真实的数字。您仍然无法计算它们之间的欧几里德距离。请查看打印(功能)
的输出。您将每个列名中除第一个字符外的所有字符作为您的特性,我认为您不打算这样做。我想您需要的是features=df1.values[:,1::
。当你尝试进行聚类时,这仍然会给你一个错误,但这是一个错误,因为在你的数据中有一个列表,这正是你的问题想要得到的。你的权利,这不是我打算做的。我想我要找的是id
作为标签(我有)的列表,然后为k-means输入生成样本x特征
矩阵我假设这是k-均值的正确输入。均值仅适用于欧几里德距离。X2
中元素之间的距离是多少?X2
特征是分类值。我已将标记转换为整数表示,这意味着您为它们指定了任意数字。这并不能让他们得到真实的数字。您仍然无法计算它们之间的欧几里德距离。