import numpy
from numpy import *
def loadDataSet():
dataMat = [];
labelMat = []
fr = open("D:/回归/testSet.txt")
for line in fr.readlines(): # 按行读取整个文件
lineArr = line.strip().split() # 联合用法,按照一定的格式进行读取之后,进行划分(成列表),在进行首尾多余字符的删除
# 以空格分隔split,并去掉空格strip
dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])]) # 1对应w0系数,第一列对应w1,第二列对应w2
labelMat.append(int(lineArr[2])) # 第三列标签
return dataMat, labelMat
def sigmoid(inX):
return 1.0 / (1 + numpy.exp(inX))
def gradAscent(dataMatIn, classLabels):
dataMatrix = mat(dataMatIn) # mat将列表转化维numpy的矩阵
labelMat = mat(classLabels).transpose() # transpose矩阵转置
m, n = shape(dataMatrix)
alpha = 0.001
maxCycles = 500
weights = ones(n, 1)
for k in range(maxCycles):
h = sigmoid(dataMatrix * weights)
error = (labelMat - h)
weights = weights + alpha * dataMatrix.transpose() * error
return weights
报错(null): can't open file '': [Errno 2] No such file or directory
文本文件与代码放在同一个文件夹回归中
确认文本文件的确存在,并且文件名拼写正确。
确保文本文件与代码文件位于同一个文件夹中。
如果你在多个操作系统上运行代码(例如,在Windows和Linux上),请注意文件路径的格式是否正确。Windows使用反斜杠“\”,而Linux使用正斜杠“/”。
注意文件的权限问题,以及可以干掉中文测试一下,看是否中文的影响
根据您提供的代码和错误信息,出现错误的原因是找不到指定的文件。请确保您的代码文件和文本文件在同一个文件夹中,并且文件名为"testSet.txt",并且确保文件路径正确。
根据您提供的信息,您可以将以下代码段:
```python
fr = open("D:/回归/testSet.txt")
更改为:
fr = open("testSet.txt")
```
这将使用相对路径来打开与代码文件相同文件夹中的"testSet.txt"文件。如果仍然出现错误,请检查文件名和路径是否正确,并确保代码文件和文本文件在同一个文件夹中。
根据以上给出的信息,你这里使用的是绝对路径。只能check下 "D:/回归/testSet.txt" 是否真的存在。路径没问题的话,可以尝试将文件放到一个全英文的路径下试试。
另外,你这里打开文件后,没有进行主动关闭,是存在问题的。建议:
def loadDataSet():
dataMat = [];
labelMat = []
with open("D:/回归/testSet.txt") as fr:
for line in fr.readlines(): # 按行读取整个文件
lineArr = line.strip().split() # 联合用法,按照一定的格式进行读取之后,进行划分(成列表),在进行首尾多余字符的删除
# 以空格分隔split,并去掉空格strip
dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])]) # 1对应w0系数,第一列对应w1,第二列对应w2
labelMat.append(int(lineArr[2])) # 第三列标签
return dataMat, labelMat
D:/回归/testSet.txt,看下你这目录下到底有没有这个文件