西瓜书习题 3.3
编程实现对率回归,并给出西瓜数据集上的结果
西瓜数据集如下:
ID density Sugar_content label
0 1 0.697 0.4600 1
1 2 0.774 0.3760 1
2 3 0.634 0.2640 1
3 4 0.608 0.3180 1
4 5 0.556 0.2150 1
5 6 0.403 0.2370 1
6 7 0.481 0.1490 1
7 8 0.437 0.2110 1
8 9 0.666 0.0910 0
9 10 0.243 0.0267 0
10 11 0.245 0.0570 0
11 12 0.343 0.0990 0
12 13 0.639 0.1610 0
13 14 0.657 0.1980 0
14 15 0.360 0.3700 0
15 16 0.593 0.0420 0
16 17 0.719 0.1030 0
这题的关键就在于对对率回归的理解,附上对率回归的手写版公式推导过程:
推导RL的过程,得到了梯度公式,接下来用梯度上升算法实现RL(还有一种是用牛顿法实现,以后有时间在补充吧qwq~)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#读取文件
df = pd.read_csv('watermelon3.0alpha.csv')
print(df)
#方便矩阵运算,添一列1
df['one'] = 1.0
#将训练集装进矩阵
train_X = np.mat(df[['one','density','Sugar_content']])
#标签
labels = np.mat(df[['label']]