【问题标题】:pandas kmeans how to work with categorical attributespandas kmeans 如何使用分类属性
【发布时间】:2016-11-11 17:10:27
【问题描述】:

我使用 Cloudera 5.2 VM 和 pandas 0.18.0 我想将 kmeans 应用于我的数据框。但我有 str 列。

我的数据框是

adClicksPerTime.head(n=5)
Out[50]: 
            timestamp   adCategory  userId  totalAdClicks
0 2016-05-26 15:00:00   automotive     355              1
1 2016-05-26 15:00:00     clothing    1027              1
2 2016-05-26 15:00:00    computers    1821              1
3 2016-05-26 15:00:00    computers    2139              1
4 2016-05-26 15:00:00  electronics     253              1

for col in adClicksPerTime:
     print(col)
     print(type(adClicksPerTime[col][1]))


timestamp
<class 'pandas.tslib.Timestamp'>
adCategory
<class 'str'>
userId
<class 'numpy.int64'>
totalAdClicks
<class 'numpy.int64'>

当我执行 kmeans 时出现错误

ValueError: could not convert string to float: 'automotive'

我尝试将我的字符串转换为分类类型,然后分配数字代码

adClicksPerTime.adCategory = pd.Categorical.from_array(adClicksPerTime.adCategory)     

adClicksPerTime.head(n=5)
Out[54]: 
            timestamp   adCategory  userId  totalAdClicks
0 2016-05-26 15:00:00   automotive     355              1
1 2016-05-26 15:00:00     clothing    1027              1
2 2016-05-26 15:00:00    computers    1821              1
3 2016-05-26 15:00:00    computers    2139              1
4 2016-05-26 15:00:00  electronics     253              1

for col in adClicksPerTime:
     print(col)
     print(type(adClicksPerTime[col][1]))


timestamp
<class 'pandas.tslib.Timestamp'>
adCategory
<class 'str'>
userId
<class 'numpy.int64'>
totalAdClicks
<class 'numpy.int64'>

如何将 kmeans 应用到这个 str 字段?

【问题讨论】:

  • k-means 仅适用于 连续 变量。不要在这种数据上使用它!

标签: pandas k-means categorical-data


【解决方案1】:

Get dummies 会将类别更改为 dummy。

dummies = pd.get_dummies(adClicksPerTime[adCategory])
del dummies['automotive']
print dummies.columns

然后将这个DataFrame与adClicksPerTimedataFrame合并,最后应用Kmeans。

adClicksPerTime.info() 会给你数据类型。

【讨论】:

    猜你喜欢
    • 2015-04-26
    • 2020-04-06
    • 2019-08-21
    • 1970-01-01
    • 2017-11-23
    • 2014-01-27
    • 2015-08-30
    • 2019-11-22
    • 1970-01-01
    相关资源
    最近更新 更多