【问题标题】:Python slice notationPython 切片表示法
【发布时间】: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


【解决方案1】:

只是为了进一步说明。如果您知道目标列(名称),那么首选方法是选择除目标列之外的所有内容,如下所示

df=pd.DataFrame({'a':[1,2],'b':[2,3],'c':[1,9]})
target_col=['c'] # column 'c' is the target column here
X=df[list(set(df.columns).difference(target_col))].values # X-> features
Y=df[target_col].values # Y -> target

如果使用列号。假设最后一列是目标列

data=df.values
X=data[:,:2] # from column 1 upto second last column including all the rows
Y=data[:,2] # only last column(target) including all the rows

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多