交大软院第一次开机器学习课,实在不知道老师在上什么,我就一边摸索着一边写博客记录一下。
1.获取CSV数据
- 从手机价格预测分类数据获取到CSV文件
根据项目要求 进行8:1:1的train-valid-test分割。
2.处理CSV
处理csv的方法有很多,可以利用python的CSV库,不过最好使用主流的pandas来操作
pandas预备知识
- Dataframe : Two-dimensional, size-mutable, potentially heterogeneous tabular data.
- Series : One-dimensional ndarray with axis labels (including time series).
- 具体见pandas相关文章
pd.read_csv
- 文档
官方文档-read_csv - 基本用法
# filename指定csv文件名,sep是csv内数据分隔符,skiprows与skipfooter即字面意思
pandas.read_csv(filename,sep=',', usecols=None, skiprows=None, skipfooter=0)
- 获取行列
# 读取csv
csv_handler = pd.read_csv(path)
# 获取一列数据
csv_handler['battery_power']
# 获取行数据切片
splice_data = csv_handler.loc[100,200]
# 遍历行
pd.to_csv
- 文档
官方文档-read_csv - 基本用法
csv_handler = pd.read_csv(path)
...
###操作csv###
...
# filename指定csv文件名,index代表是否在每行前加上index
csv_handler.to_csv(filename,index=True,encoding="utf_8_sig")
3.用sklearn做预处理
sklearn的preprocessing类可以很方便的对数据做预处理,配合上numpy,可以满足绝大多数预处理的需求。
正则化数据
项目要求将数据正则化到[0,1]中,则MinMaxScaler()可以很方便的完成这个需求
- 用法示例
from sklearn.preprocessing import MinMaxScaler
# 初始化scaler
scaler = MinMaxScaler()
# 将目标的一维数组转化为可以用作训练的数组
battery_power = np.array(csv_handler['battery_power']).reshape(-1, 1)
# 根据目标数组训练scaler
scaler.fit(battery_power)
# 接收正则化后的数组
csv_handler['battery_power'] = scaler.transform(battery_power)
至此,预处理步骤完成,进入下一步。