kaggle 从零开始记录遇到的问题

首先是数据的处理:

标准化,特征的选择等...在此选用sklearn库http://scikit-learn.org/stable/index.html)。

英文在短时间内理解起来还是有些困难,因此找了些中文资料

1)ML神器:sklearn的快速使用

2) python常用库 - NumPy 和 sklearn入门

3) 数据的缺值补全-sklearn imputer

4) 特征选择

5) 数据预处理-标准化

在此列举在编程过程中出现的错误

1) TypeError: 'NoneType' object is not subscriptable

这个问题是因为读csv的时候读到最后一行为空行导致的,在读csv时需要添加代码限定。

train = pd.read_csv(path + 'train.csv', skiprows=range(1,149903891), nrows=35000000, usecols=columns, dtype=dtypes)

2)TypeError: unbound method fit_transform() must be called with StandardScaler instance as first argument (got ndarray instance instead)

发生这个问题的代码入下:

y_normalized = StandardScaler.fit_transform(train['AQI'].values.reshape(-1,1))

这段代码主要用于数据预处理阶段,进行数据拟合和标准化,问题出现的原因是StandardScaler需要首先定义一个实例

ss = StandardScaler()
y_normalized = ss.fit_transform(train['AQI'].values.reshape(-1,1))

另外,关于StandardScaler的fit_transform和transform方法比较可参见:https://blog.csdn.net/quiet_girl/article/details/72517053

3) ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

由于输入存在空值,无穷大/小或超出float64类型的数。

解决方法参见:

https://blog.csdn.net/u013764485/article/details/53012978

https://stackoverflow.com/questions/29060962/a-value-too-large-for-dtypefloat64

https://datascience.stackexchange.com/questions/11928/valueerror-input-contains-nan-infinity-or-a-value-too-large-for-dtypefloat32

在此列举一些编程过程中的经验总结

数据预处理阶段:

经过数据的标准化处理后会存在负值,但是我们发现,会出现以下问题ValueError: Input X must be non-negative.

可以手动处理,先将ndarry类型的y_normalized转成list,然后对每个元素进行下述操作

def normal(target,min,max):
    data = (target[0] - min)/(max - min)
    return data

 

posted @ 2018-03-17 19:42  O_din  阅读(4583)  评论(2编辑  收藏  举报