问题背景:平常用cmd运行python代码问题不大,我在学习《机器学习实战》这本书时,发现cmd无法运行
import numpy as np
这条语句,原因是没有安装numpy。虽然用Anaconda的prompt以及Spyder等都可以成功运行,但如何在cmd环境下使用代码中含有numpy的文件呢?
答:
用pip install numpy
命令即可,以下是效果:
现在我们试着运行代码:
这里的文件名为KNN02.py,内容来自《机器学习实战》
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 29 11:14:25 2018
@author: CHJ
"""
import numpy as np
"""
函数说明:打开并解析文件,对数据进行分类:1代表不喜欢,2代表魅力一般,3代表极具魅力
"""
def file2matrix(filename):
#打开文件
fr = open(filename)
#读取文件所有内容
array0Lines = fr.readlines()
#得到文件行数
numberOfLines = len(array0Lines)
#返回的NumPy矩阵,解析完成的数据:numberOfLines行,3列
returnMat = np.zeros((numberOfLines,3)) #zeros(2,3)就是生成一个 2*3的矩阵,各个位置上全是 0
#返回的分类标签向量
classLabelVector = []
#行的索引值
index = 0
for line in array0Lines:
#s.strip(rm),当rm空时,默认删除空白符(包括‘\n‘,‘\r‘,‘\t‘,‘ ‘)
line = line.strip()
#使用s.split(str ="",num = string,cout(str))将字符串根据‘\t‘分隔符进行切片。
listFromLine = line.split(‘\t‘)
# 每列的属性数据
returnMat[index,:] = listFromLine[0:3] #将数据前三列提取出来,存放到returnMat的NUmPy矩阵中,也就是特征矩阵
#根据文本中标记的喜欢的程度进行分类,1代表不喜欢,2代表魅力一般,3代表极具魅力
if listFromLine[-1] == ‘didntLike‘: #索引值-1表示列表中最后一列元素
classLabelVector.append(1)
elif listFromLine[-1] == ‘smallDoses‘:
classLabelVector.append(2)
elif listFromLine[-1] == ‘largeDoses‘:
classLabelVector.append(3)
index += 1
return returnMat,classLabelVector
if __name__ == "__main__":
#打开的文件名
filename = ‘datingTestSet.txt‘
#打开并处理数据
datingDataMat, datingLables = file2matrix(filename)
print(datingDataMat)
print(datingLables)
看看结果:
原文地址:https://www.cnblogs.com/HongjianChen/p/8670993.html
时间: 2024-10-09 23:50:28