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 打开来看,长这样:
https://ithelp.ithome.com.tw/upload/images/20210904/201113733PRdVa95DO.jpg
疑…栏位名称怪怪的,原来第一列不是栏位名称。
它意思是说有150笔资料,前4个栏位是特徵,
第五栏是结果target (三个数字代表三种品种:setosa、versicolor、virginica)。

我们把它改成看得懂的方式:
https://ithelp.ithome.com.tw/upload/images/20210904/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.data
y = iris.target

我们的读取方式:

#--- modified part 
#--- 读取自定的 irisC.csv
iris = np.genfromtxt("irisC.csv",delimiter=',',dtype=np.float64) 
r,c  = iris.shape
print(f'row: {r} columns: {c}')                # row 0 is header
X = iris[1:,0:4]          # X.dtype float64 
#print(X[0,:])            # X 0~3 column contents
y = 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在此


<<:  JavaScript入门 Day04_变数宣告

>>:  [Day 4] lock-free and CAS

Youtube API - 凡事趁早没有那麽多来日方长(总结)

『理工男嘛,就是有问题要解决问题,没问题那就创造问题』,在做为一个数据分析师之前,我本身的大学所学的...

[前端暴龙机,Vue2.x 进化 Vue3 ] Day8. v-model 修饰符 -- 省下自己写 JS 处理的时间

v-model 修饰符 Vue 里面为 v-model 提供了一些可以用的修饰符,主要是可以帮我们限...

AutoCAD ActiveX #5-1 Selection Filters (0)

Command:filter filtertype filterdata filtertype fi...

资视就是力量 - Highcharts / 尾声

终於,花了一个月的时间,我们从零开始认识 Highcharts 到现在已经能够配合 Vue.js 一...

Golang快速入门-2(Day5)

那就接续着昨天的内容,今天提到的也是大家常用的function及slice function go在...