Sklearn读取自定的CSV k-means範例修改

数据集的使用,常常令人一头雾水,举例来说,iris dataset这个最常用的资料集。
用一行代码就可以把资料集放进来了
iris = datasets.load_iris()
可是它到底长什么样子?
官方说明 给道指令 iris.DESCR() 就会列出一堆文字说明。
不过还是一头雾水,看不到真面目。
原来,iris.csv是安装完sklean之后,就放在你的资料夹里的东西。
在安装Anaconda3位置下x32 x64不同\lib\site-packages\sklean\datasets\data内
Iris.csv 打开来看,长这样:
http://img2.58codes.com/2024/201113733PRdVa95DO.jpg
疑…栏位名称怪怪的,原来第一列不是栏位名称。
它意思是说有150笔资料,前4个栏位是特徵,
第五栏是结果target (三个数字代表三种品种:setosa、versicolor、virginica)。

我们把它改成看得懂的方式:
http://img2.58codes.com/2024/20111373PFGSMqDQDN.jpg
那么,该如何读取这个csv ?

我们把sklearn官网範例 K-means clustering 略做修改,读取我们的irisC.csv ,其它的码不变。

原先範例之读取方式:
iris = datasets.load_iris()
X = iris.data # 大X 是四项特徵
y = iris.target # 小y 是target

iris = datasets.load_iris()X = iris.datay = iris.target

我们的读取方式:

#--- modified part #--- 读取自定的 irisC.csviris = np.genfromtxt("irisC.csv",delimiter=',',dtype=np.float64) r,c  = iris.shapeprint(f'row: {r} columns: {c}')                # row 0 is headerX = iris[1:,0:4]          # X.dtype float64 #print(X[0,:])            # X 0~3 column contentsy = iris[1:,4]y = np.array(y,dtype= np.int32)print(f'target type : {y[:].dtype}')         # y.dtype int32#--- 载入栏位名称 ------#--- 问题是 np 已设定为 dtype float64 ,所以header读出来是 nan 无法使用#--- 所以重新再读一次,使用 Unicode string type 'U'#--- 此处只是读出栏位名称,并未使用它irisH = np.genfromtxt('irisC.csv',delimiter=',',dtype='U')fld = []# 首列是栏位名称for n in range(0,5):    fld.append(irisH[0,n])    print('栏位名称 :',fld)#-------------------------------------

虽然,码长了点,不过可以自主处理自定的csv档,也不错。
其它的範例代码不动它。

我们修改后的 Source Code + irisC.csv在此


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章