【发布时间】:2017-11-23 18:00:54
【问题描述】:
我按照教程创建了一个线性回归算法,并将其应用于提供的数据集,它运行良好。但是,相同的算法不适用于另一个类似的数据集。谁能告诉我为什么会这样?
def computeCost(X, y, theta):
inner = np.power(((X * theta.T) - y), 2)
return np.sum(inner) / (2 * len(X))
def gradientDescent(X, y, theta, alpha, iters):
temp = np.matrix(np.zeros(theta.shape))
params = int(theta.ravel().shape[1])
cost = np.zeros(iters)
for i in range(iters):
err = (X * theta.T) - y
for j in range(params):
term = np.multiply(err, X[:,j])
temp[0, j] = theta[0, j] - ((alpha / len(X)) * np.sum(term))
theta = temp
cost[i] = computeCost(X, y, theta)
return theta, cost
alpha = 0.01
iters = 1000
g, cost = gradientDescent(X, y, theta, alpha, iters)
print(g)
在通过this 数据集运行算法时,我得到的输出为matrix([[ nan, nan]]) 和以下错误:
C:\Anaconda3\lib\site-packages\ipykernel\__main__.py:2: RuntimeWarning: overflow encountered in power
from ipykernel import kernelapp as app
C:\Anaconda3\lib\site-packages\ipykernel\__main__.py:11: RuntimeWarning: invalid value encountered in double_scalars
但是this 数据集工作正常并输出matrix([[-3.24140214, 1.1272942 ]])
这两个数据集都相似,我已经研究过很多次了,但似乎无法弄清楚为什么它适用于一个数据集但不适用于另一个数据集。欢迎任何帮助。
编辑:感谢 Mark_M 的编辑提示 :-)
【问题讨论】:
-
您之所以被否决,是因为您没有花时间隔离问题并在问题中包含代码。没有人愿意翻阅某人的 repo 并找出他们的代码出了什么问题。那不是堆栈溢出。您需要确定问题并提出具体问题。看看这里寻求帮助:stackoverflow.com/help/mcve
-
@Mark_M 哦,我现在明白了。我会编辑它。我应该如何处理数据集?一个链接就够了吗?
标签: python-3.x machine-learning linear-regression data-science