首先是数据的处理:
标准化,特征的选择等...在此选用sklearn库(http://scikit-learn.org/stable/index.html)。
英文在短时间内理解起来还是有些困难,因此找了些中文资料:
2) python常用库 - NumPy 和 sklearn入门
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