Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法理解熊猫中的预测算法_Python_Pandas_Machine Learning - Fatal编程技术网

Python 无法理解熊猫中的预测算法

Python 无法理解熊猫中的预测算法,python,pandas,machine-learning,Python,Pandas,Machine Learning,我是机器学习新手,我正在运行一个代码,该代码将使用pandas、quandl分析一组数据,该代码运行良好,并给出输出,但我无法理解该代码的两行,我正在发布该代码 import pandas as pd import quandl import math df = quandl.get('WIKI/GOOGL') df = df[['Adj. Open','Adj. High','Adj. Low','Adj. Close','Adj. Volume',]] df['HL_PCT'] = (df

我是机器学习新手,我正在运行一个代码,该代码将使用pandas、quandl分析一组数据,该代码运行良好,并给出输出,但我无法理解该代码的两行,我正在发布该代码

import pandas as pd
import quandl
import math

df = quandl.get('WIKI/GOOGL')
df = df[['Adj. Open','Adj. High','Adj. Low','Adj. Close','Adj. Volume',]]
df['HL_PCT'] = (df['Adj. High'] - df['Adj. Close'])/ df['Adj. Close']*100.0
df['PCT_change'] = (df['Adj. Close']  - df['Adj. Open']) / df['Adj. Open'] * 
100.0



df = df[['Adj. Close','HL_PCT','PCT_change','Adj. Volume']]

forecast_col = 'Adj. Close'
#filling the NAN datas
df.fillna(-99999,inplace=True)
// this line i am unable to understand
forecast_out = int(math.ceil(0.02*len(df)))
// this line i am unable to understand
df['label'] = df[forecast_col].shift(-forecast_out)
df.dropna(inplace=True)
print(df.head())

我无法理解ceil函数中0.1的用途,以及此代码为什么使用shift函数,为什么使用-forecast\u out?因为forecast\u out给出了一些不同的值。我们已经用一些数据填补了NAN职位,但是为什么我们要放弃NAN?请帮助

在机器学习中,通常会有数据样本,每个样本都有特性和标签(许多api都希望这样,比如scikit learn)。在您的示例中,每个示例都是数据帧的一行。要预测的值是
forecast\u col
。因为你看的是股票数据,所以你想预测未来会发生什么。“预测”现在发生的事情是没有意义的(你可以观察它)。
forecast\u out
值是一些任意值,在这种情况下,它用于表示您将提前多少时间预测“Adj”。关闭'

shift
方法将观测值与预测的未来值对齐。然后,有了这个数据框架,您就可以轻松地使用scikit学习拟合模型

lr = sklearn.linear_model.LinearRegression()
lr.fit(df[['HL_PCT','PCT_change','Adj. Volume']], df[forecast_col])

该模型将根据当前观测值预测未来几天的情况。

我遵循了相同的教程,遇到了与您相同的问题,我是如何解决的: math_ceil():四舍五入到最大值,例如:

  math_ceil(4.5)
会议的主题是:

5
然后,代码将乘以:

(0.02*len(df))  
len(df)基本上是数据集的大小,在本例中为3424

(print (len(df))
换言之,我们正在跟踪3424天的数据,现在在我们的案例中,我们将预测未来会发生什么,但显然,我们不会在3424天的时间范围内进行跟踪,但我们将对未来进行一次小规模的预测,在我们的案例中,这将是69天(占我们总数据的2%)除了我们的分类器中的最后一个数据之外,我们还可以查看该时期的价格

总结一下:

 forecast_out = int(math.ceil(0.02*len(df))) 
等于69

现在,我们将使用变量forcast_out来确定标签:

  df['label'] = df[forecast_col].shift(-forecast_out)
这个公式意味着我们正在将数据集的列向上移动,因此在我们的视野中出现的是69天后的股价

下面是代码,其中包含更多详细信息,您可以尝试使用它

forecast_col ='Adj. Close'
df.fillna(-99999,inplace=True)

forecast_out=int(math.ceil(0.02*len(df)))
print ("Dataset= " + str(len(df)))
print ("Forecasting after how many days = " + str(forecast_out))
df['label']=df[forecast_col].shift(-forecast_out)
df.dropna(inplace=True)
print(df.tail())

谢谢你的回答,但我不明白int(math.ceil(0.02*len(df))和shift(-forecast_out)的用法是什么?这意味着我了解到模型试图在Adj的基础上预测某些值。按列标签关闭列。但他们为什么写0.02*len(df)?那是我不明白的。那部分对我来说也没有意义。提前预测时间是数据集大小的2%。我做机器学习已经有一段时间了,从来没有见过。对不起,如果没有更多的背景,我想我无法提供更多的见解。通常,这是一个任意的数字,例如我想提前20天预测。