楼主: liemk
4245 8

[问答] 求助python 编程问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

25%

还不是VIP/贵宾

-

威望
0
论坛币
4107 个
通用积分
1.0500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
8845 点
帖子
36
精华
0
在线时间
61 小时
注册时间
2014-6-14
最后登录
2021-12-19

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
小弟刚学python不就,先遇到一个问题困扰了很久求各位大神解答
小弟现在学习machine learning in action 里面的KNN算法,在第二部,输入数据并统计数据的标号和数据时需要输入文件,我安装宿舍的代码一直有问题。求各位大神解答
代码如下
#!usr/bin/python
from numpy import *
def file2matrix(filename):
        fr = open(filename)
        numberOfLines = len(fr.readlines())
        returnMat = zeros((numberOfLines,3))
        classLabelVector = []
        fr = open(filename)
        index = 0
        for line in fr.readlines():
                line = line.strip()
                listFromLine = line.split('\t')
                returnMat[index,:] = listFromLine[0:3]
                classLabelVector.append(int(listFromLine[-1]))
                index += 1
        return returnMat,classLabelVector
datingDataMat,datingLabels =file2matrix('E:\python data\py2\datingTestSet.txt')

运行后 一直出现


请求给位大神解答,小弟感激不尽
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python filename Learning earning machine learning machine python action import

这一行classLabelVector.append(int(listFromLine[-1]))
修改为classLabelVector.append(listFromLine[-1])

Snip20150704_35.png (151.96 KB)

Snip20150704_35.png

使用道具

没有从逻辑上来判断对错,只是从语法上排除了错误。

如果不对,请提出,帮你再修改。

使用道具

板凳
liemk 发表于 2015-7-4 19:39:20 |只看作者 |坛友微信交流群
python爱好者 发表于 2015-7-4 09:09
这一行classLabelVector.append(int(listFromLine[-1]))
修改为classLabelVector.append(listFromLine[-1] ...
问题解决了,非常感谢,您真是高手啊

使用道具

老外书上代码 是错误的!

使用道具

地板
改变ing88 学生认证  发表于 2016-4-12 22:24:58 |只看作者 |坛友微信交流群
python爱好者 发表于 2015-7-6 15:48
老外书上代码 是错误的!
您好,我也碰到楼主的问题,并用你的方案解决了,可是输出datingLabels[0:20]的时候,显示的不是数字,而是字符串,是因为没有int的原因吗?
>>> datingLabels[0:20]
['largeDoses', 'smallDoses', 'didntLike', 'didntLike', 'didntLike', 'didntLike', 'largeDoses', 'largeDoses', 'didntLike', 'largeDoses', 'didntLike', 'didntLike', 'smallDoses', 'didntLike', 'didntLike', 'didntLike', 'didntLike', 'didntLike', 'smallDoses', 'largeDoses']

使用道具

7
python爱好者 发表于 2016-4-13 14:09:28 |只看作者 |坛友微信交流群
改变ing88 发表于 2016-4-12 22:24
您好,我也碰到楼主的问题,并用你的方案解决了,可是输出datingLabels[0:20]的时候,显示的不是数字,而 ...
加一个 print type()测试一下看是啥类型!

使用道具

8
改变ing88 学生认证  发表于 2016-4-13 14:26:29 |只看作者 |坛友微信交流群
python爱好者 发表于 2016-4-13 14:09
加一个 print type()测试一下看是啥类型!
type(datingLabels)是列表类型。感觉应该在前面将字符串以数字表示,但也不是用int进行强制转换。

使用道具

9
改变ing88 学生认证  发表于 2016-4-13 14:30:56 |只看作者 |坛友微信交流群
python爱好者 发表于 2016-4-13 14:09
加一个 print type()测试一下看是啥类型!
因为‘datingTestSet.txt’文件中每一行的第四个元素是largeDoses  或 smallDoses 或didntLike。书上的datingLabels[0:20]的结果是[3,2,1,1,1,....]意味着largeDoses用3表示了,smallDoses用2表示了,didntLike用1 表示了。而我的代码输出结果就是['largeDoses', 'smallDoses', 'didntLike',' '.....]

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 17:25