首先是數據的處理:
標准化,特征的選擇等...在此選用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