微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 csv 文件中列的字符串值转换为 int 或 float 值以在 Python 中创建 Kmeans 聚类算法

如何解决将 csv 文件中列的字符串值转换为 int 或 float 值以在 Python 中创建 Kmeans 聚类算法

我需要为来自 https://archive.ics.uci.edu/ml/datasets/Zoo 的 zoo.csv 数据创建 Kmeans 算法,该算法在代码的某些部分找出合适数量的集群(使用肘部方法),并测试给定数量的集群( n_clusters)。 但问题是 csv 文件中 anim_name 列的值是字符串值(土豚、羚羊等),当我运行此代码时,我收到此错误消息:“ValueError: Could not convert string to float :'土豚'”。我怎样才能将 anim_name 列的值转换为 float(或 int),以便我可以使这个算法工作?我尝试了不同的方法,但到目前为止没有任何效果

到目前为止,这是我的代码(我在 Google Colab 中执行此操作):

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import tree
from sklearn import metrics
import matplotlib.pyplot as plt
from sklearn.datasets import load_wine
from sklearn.cluster import KMeans
%matplotlib inline
from sklearn.preprocessing import LabelEncoder
from sklearn import preprocessing

from google.colab import drive
drive.mount('/content/drive')

data=pd.read_csv('/content/drive/MyDrive/MyFiles/zoo[1].csv',delimiter=',')
data.head()

kmeans=KMeans(n_clusters=2,max_iter=300)
kmeans.fit(data)

y_km=kmeans.predict(data)
clusters=kmeans.labels_
data['clusters']=clusters
data

在上一部分之后,我收到此错误消息:"/usr/local/lib/python3.7/dist-packages/numpy/core/_asarray.py in asarray(a,dtype,order) 81 第82话 ---> 83 返回数组(a,dtype,copy=False,order=order) 84 85

ValueError: 无法将字符串转换为浮点数:'aardvark'"

res1=np.round(data.groupby('clusters').mean(),2)
pd.DataFrame(res1)

scores = []
for i in range(1,11):
    kmeans = KMeans(n_clusters=i)
    kmeans.fit(data)
    scores.append(kmeans.inertia_)
plt.plot(range(1,11),scores)
plt.title('Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('scores')
plt.show()

解决方法

您可以将任何字符串转换为 0 和 1 或分类代码。以下是两个选项的示例。

现在,我在这里没有看到任何数据样本,当我搜索它时,我没有找到任何有用的东西,但我相信您可以调整这个通用示例以满足您的需求。

import pandas as pd
dummies = pd.get_dummies(df['your_column'])

对比

# string
df['zipcode'] = df['zipcode'].astype(str)
# categorical
df['zipcode'] = df['zipcode'].astype('category')

另外,看看下面的链接。

https://towardsdatascience.com/categorical-encoding-using-label-encoding-and-one-hot-encoder-911ef77fb5bd

https://developer.ibm.com/tutorials/ba-cleanse-process-visualize-data-set-3/

我认为这应该适合你。如果您对这些主题有更多疑问,请回帖。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。