机器学习笔记1
case study:
Regularization:
Hw1完成笔记1
题目描述:
使用丰原站的观测记录,分成 train.csv 跟 test.csv,train.csv是丰原站每个月的前 20 天所有数据。test.csv 则是从丰原站剩下的资料中取样出来。
train.csv: 每个月前 20 天的完整数据。
test.csv : 从剩下的数据当中取样出连续的 10 小时为一笔,前九小时的所有观测数据当作 feature,第十小时的 PM2.5 当作 answer。一共取出 240 笔不重复的 test_data,请根据 feature 预测这 240 笔的 PM2.5。
Data 含有 18 项观测数据 AMB_TEMP, CH4, CO, NHMC, NO, NO2, NOx, O3, PM10, PM2.5, RAINFALL, RH, SO2, THC, WD_HR, WIND_DIREC, WIND_SPEED, WS_HR。
数据读取与预处理:
iloc函数(引):
位于:pandas库,全称为index location,即对数据进行位置索引,从而在数据表中提取出相应的数据。
df.iloc[a,b]> 操作对象:DataFrame类型 用法:
1.iloc[a,b]:取行索引为a列索引为b的数据。
2.iloc[a:b,c]:取行索引从a到b-1,列索引为c的数据。 iloc[].values,用values属性取值,返回ndarray,但是单个数值无法用values函数读取
import pandas
df = pandas.read_csv('a.csv')
print(df.iloc[0:2,2]) #数据结构是Series
print(df.iloc[0:2,2].values) #数据结构是ndarray
#Out1:0 87
# 1 95
# Name: 分数, dtype: int64
#Out2:[87 95]
3.iloc[a:b,c:d]:取行索引从a到b-1,列索引从c到d-1的数据。
4.iloc[a]:取取行索引为a,所有列索引的数据。
loc函数(引):
loc使用实际设置的索引来索引数据。但行列名为数字时,loc也可以索引数字,但这里的数字不一定从0开始编号,是对应具体行列名的数字。
索引为一个数,默认输出行
print(df.loc[0])#输出第0行元素
print(df.iloc[0])#输出第0行元素
0 0
1 1
2 2
3 3
输出结果为df第0行元素,结果中第一列表示列名,第二列表示具体的值。
如果只需要输出某一列,输入df.loc[:,0]表示输出第0列。
如果需要输出第0到2列的数据:
#方式1 df.loc[:,0:2]#可把loc理解为遍历字符串类型,0:2则表示标签为0,1,2三列
#方式2 df.iloc[:,0:3]#iloc遍历的数数字,python中0:3对应0,1,和2有一行或列不是从0顺序编号:
#把行标签换成其他数字编号 df.index=[2,5,7] df.loc[2]
输出结果为:
0 0
1 1
2 2
3 3
Name: 2, dtype: int32
输出结果对应的是列标签为“2”所在的行。
行或者列为非数字标签:
#把行标签转化为非数字类型 df.index=[‘a’,‘b’,‘c’]
#输出第a、b行,第0到2列的数据
#方式1 df.loc[[‘a’,‘b’],0:2]#可把loc理解为遍历字符串类型,0:2则表示标签为0,1,2三列
#方式2 df.iloc[0:2,0:3]#iloc遍历的是数字,0:2表示的是0和1,0:3表示0,1,2
。
多数情况下用iloc即可完成任务。
data[data == ‘NR’] = 0: 将数据中值为“NR”的数据全部赋值为0,去除特殊值。
raw_data => data.to_numpy(): 将DataFrame格式的数据变成numpy矩阵
reshape(1,-1) 将数据变为1行
归一化所需函数:
mean_x = np.mean(x, axis=0)
axis = 0表示对各列求均值,返回 1* 列数 的矩阵
axis 不设置值,对> mn 个数求均值,返回一个实数
axis = 0 : 压缩行,对各列求均值,返回 1n矩阵
axis = 1 :> 压缩列,对各行求均值,返回 m*1矩阵
数据集的拆分:切片实现
numpy计算函数:
np.zeros([m,n]):返回一个全0的mn数组。
np.ones([m,n]):返回一个全1的mn维数组。
np.concatenate((a,b),axis=1):a和b做行拼接,结果为[a,b]。
np.dot(x,w):x和w点乘。
np.power(x,n):x中各元素的n次方。
np.sqrt(x):x中各元素的平方根。
np.sum(x):x中所有元素的和,返回一个值。
x.transpose():将x转置。
参数保存与加载:
w = w - learning_rate * gradient / np.sqrt(adagrad + eps) # 更新权重
np.save(‘weight.npy’, w) # 将参数保存下来
w = np.load(‘weight.npy’)