数据框成numpy数组,逗号分隔


问题内容

场景

我已经将一个csv(\ t分隔)读入一个Dataframe中,现在需要以numpy数组格式进行聚类而不更改类型

问题

到目前为止,根据尝试的引用(如下),我未能按要求获得输出。我尝试获取的两列值在int64 / float64中,如下所示

         uid   iid       rat
0        196   242  3.000000
1        186   302  3.000000
2         22   377  1.000000

目前,我仅对 iidrat 感兴趣,并将其传递给Kmeans.fit()方法,而在EPSILON中也是如此。我需要以下格式

预期格式

[[242, 3.000000],
[302, 3.000000],
[22, 1.000000]]

尝试失败

X = values[:, 1:2]
Y = values[:, 2:3]
someArray = np.array([X,Y])
print someArray

并不会在执行时告别

[[[  2.42000000e+02]
  [  3.02000000e+02]
  [  3.77000000e+02]
  ..., 
  [  1.35200000e+03]
  [  1.62600000e+03]
  [  1.65900000e+03]]
 [[  3.00000000e+00]
  [  3.00000000e+00]
  [  1.00000000e+00]
  ..., 
  [  1.00000000e+00]
  [  1.00000000e+00]
  [  1.00000000e+00]]]

迄今为止无用的参考文献

  1. 这个
  2. 这两个
  3. 这三个
  4. 这四个

编辑1

尝试np_df = np.genfromtxt('AllData.csv', delimiter='\t', unpack=True)并得到了这个

[[             nan   1.96000000e+02   1.86000000e+02 ...,   4.79000000e+02
    4.79000000e+02   4.79000000e+02]
 [             nan   2.42000000e+02   3.02000000e+02 ...,   1.36000000e+03
    1.39400000e+03   1.65200000e+03]
 [             nan   3.00000000e+00   3.00000000e+00 ...,   2.00000000e+00
    1.92803605e+00   1.00000000e+00]]

问题答案:

看来你需要read_csvDataFrame第一与过滤器仅第二和第三列,然后再转换为numpy的阵列由values:进口大熊猫作为PD从pandas.compat进口StringIO的sklearn.cluster进口KMEANS

temp=u"""col,iid,rat
4,1,0
5,2,4
6,3,3
7,4,1"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), usecols = [1,2])
print (df)
   iid  rat
0    1    0
1    2    4
2    3    3
3    4    1

X = df.values 
print (X)
[[1 0]
 [2 4]
 [3 3]
 [4 1]]

kmeans = KMeans(n_clusters=2)
a = kmeans.fit(X)
print (a)
KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,
    n_clusters=2, n_init=10, n_jobs=1, precompute_distances='auto',
    random_state=None, tol=0.0001, verbose=0)