单变量线性回归
-
问题
测试数据集:城市人口和利润数据。希望模型,可以根据新的城市人口来预测利润。
m个样本,x有n个特征(x1到xn,注意有时候会加入x0=0)
-
代价函数cost function
代价函数以参数theta为自变量,衡量模型与数据的贴合程度。
-
梯度下降
初始theta,然后找最快的下山路线。
多变量线性回归
-
数据集:根据(房子的大小,卧室的数量)预测目标(房子的价格)
- 特征归一化
data2 = (data2 - data2.mean()) / data2.std()
- 梯度下降
逻辑回归
-
数据集:想根据两门考试的结果,来决定每个申请人是否被录取。
-
假设函数
-
代价函数
python 相关
scikit learn 线性回归
data ,X,y: pandas DataFrame
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
path = "吴恩达/ex1data1.txt"
data = pd.read_csv(path, header=None, names=['Population','Profit'])
cols = data.shape[1] # 列数
X = data.iloc[:, :cols-1] # 取前cols-1列,即输入向量(features)
y = data.iloc[:, cols-1:cols] # 取最后一列,即目标向量
from sklearn import linear_model
model = linear_model.LinearRegression()
model.fit(X, y)
x = X
f = model.predict(X).flatten()
fig, ax = plt.subplots(figsize=(8,5))
ax.plot(x, f, 'r', label='Prediction')
ax.scatter(data.Population, data.Profit, label='Traning Data')
ax.legend(loc=2)
ax.set_xlabel('Population')
ax.set_ylabel('Profit')
ax.set_title('Predicted Profit vs. Population Size')
plt.show()
iloc & loc
- 选取标签为A和C的列,并且选完类型还是dataframe
df = df.loc[:, ['A', 'C']]
df = df.iloc[:, [0, 2]]
- 选取标签为C并且只取前两行,选完类型还是dataframe
df = df.loc[0:2, ['A', 'C']]
df = df.iloc[0:2, [0, 2]]
loc是根据dataframe的具体标签选取列
iloc是根据标签所在的位置,从0开始计数。
","前面的":"表示选取整列,第二个示例中的的0:2表示选取第0行到第二行,这里的0:2相当于[0,2)前闭后开,2是不在范围之内的。