线性回归
如何判断是不是线性回归?
看目标值——连续型的数据
广义线性模型
自变量是一次的(线性关系)
y = w1x1 + w2x2 + w3x3 + …… + wnxn + b
参数是一次的(非线性关系)
y = w1x1 + w2x1^2 + w3x1^3 + w4x2^3 + …… + b
线性关系一定是线性模型
线性模型不一定是线性关系
非线性关系
线性回归的损失和优化原理
目标:求模型参数,模型参数能够使得预测准确
真实值与预测值之间的差距存在的关系就用:损失函数/cost/成本函数/目标函数 来衡量
优化损失
优化方法
正规方程
梯度下降
检验回归模型的准确 yi :i是下标 即yi
正规方程用得少
欠拟合与过拟合
L2(Ridge回归、岭回归):
J(w)=损失函数 + λ*惩罚项
λ:惩罚系数
惩罚项:权重的平方求和(为的是减小高次项特征的影响)
L1正则化(LASSO):
J(w)=损失函数 + λ*|惩罚项|
线性回归的改进
逻辑回归(分类算法)
逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。
线型回归的输出 就是 逻辑回归 的输入
将h代入到sigmoid函数中的x 映射到sigmoid函数 变成[0,1]区间
那么如何去衡量逻辑回归的预测结果与真实结果的差异呢?
优化权重w的值
def cancer_demo():
column_name = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin',
'Normal Nucleoli', 'Mitoses', 'Class']
data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data",
names=column_name)
data = data.replace(to_replace="?", value=np.nan)
data.dropna(inplace=True)
x = data.iloc[:, 1:-1]
y = data["Class"]
x_train, x_test, y_train, y_test = train_test_split(x, y)
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
estimator = LogisticRegression()
estimator.fit(x_train, y_train)
print("逻辑回归权重:\n", estimator.coef_)
print("逻辑回归偏置:\n", estimator.intercept_)
# 模型评估
y_predict = estimator.predict(x_test) # 方法1 测试集送入模型,得到预测值
print(y_predict)
print(y_test == y_predict) # 比对预测值和真实值
score = estimator.score(x_test, y_test) # 方法2 测试集x_test送入模型得到预测值,然后和y_test比对,得到acc
print(score)
return None
if __name__ == '__main__':
cancer_demo()
report = classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "恶性"])
print(report)
样本不均衡的情况下,召回率就不准确
TPR是召回率的公式
当TPR=FPR是,预测效果最差
y_true = np.where(y_test > 3, 1, 0)
roc = roc_auc_score(y_true, y_predict)
print("AUC指标:\n", roc)
我们可以怎样最有用地对其进行归纳和分组?我们可以怎样以一种压缩格式有效地表征数据?这都是无监督学习的目标,之所以称之为无监督,是因为这是从无标签的数据开始学习的。
评估聚类效果
高内聚,低耦合