【发布时间】:2019-03-06 21:13:48
【问题描述】:
我正在尝试理解 machinelearningmastery.com 中的一些示例代码,但切片符号让我感到厌烦......对于我的代码的初学者,我正在尝试使用来自 CSV 的一些数据制作一个简单的回归类型 ML 算法文件:
import pandas as pd
McheLrn = pd.read_csv('C:/Users/data.csv', index_col='Date', parse_dates=True)
McheLrn['month'] = McheLrn.index.month
McheLrn['date'] = McheLrn.index.strftime('%d')
McheLrn['hour'] = McheLrn.index.strftime('%H')
McheLrn['Day_of_week'] = McheLrn.index.dayofweek
McheLrn.head()
这将输出:
OSAT kWh month date hour Day_of_week
Date
2013-01-01 06:00:00 10.4 16.55 1 01 06 1
2013-01-01 06:15:00 10.4 16.55 1 01 06 1
2013-01-01 06:30:00 10.4 16.05 1 01 06 1
2013-01-01 06:35:00 10.4 16.05 1 01 06 1
2013-01-01 06:45:00 10.4 17.20 1 01 06 1
不确定我是否使用了正确的术语,但因变量是 kWh(Y 变量),而所有其他变量都是我的 X 变量的自变量...
下面的代码让我失望的是切片符号X = array[:,0:2] Y = array[:,2] 我不确定我是否正确选择了我的 X 和 Y 变量。
# Decision Tree Regression
import pandas
from sklearn import model_selection
from sklearn.tree import DecisionTreeRegressor
dataframe = McheLrn
array = dataframe.values
X = array[:,0:2]
Y = array[:,2]
seed = 7
kfold = model_selection.KFold(n_splits=90, random_state=seed)
model = DecisionTreeRegressor()
scoring = 'neg_mean_squared_error'
results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())
【问题讨论】:
-
array[None:None, 0:2]与所有行、第 0 列和第 1 列相同,`array[None:None, 2] 为所有行、第 2 列。 -
在
McheLrn.head()中,我如何指定对 Y 使用“kWh”变量,对 X 变量使用其他所有变量...? -
代码有效,但我不确定切片符号是否正确
-
我不认为有错误,我只是不认为他理解切片符号。
X = array[:,0:2]表示在逗号之前使用第一个:表示的所有行,然后在逗号之后使用0:2表示使用第 0 列到第 2 列(不包括 2),因此您也可以执行[:,:2]并重现相同的输出. -
所以根据切片列,X 中有 2 列,Y 中有最后一列。如果是这样,那么您的切片就可以了
标签: python pandas machine-learning data-science