欠拟合
过拟合
在学习的时候,数据提供的特征有些影响模型复杂度或者这个特征的数据点异常较多,所以算法在学习的时候尽量减少这个特征的影响(甚至删除某个特征的影响),这就是正则化
sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver="auto", normalize=False)
sklearn.linear_model.RidgeCV(_BaseRidgeCV, RegressorMixin)
def linear3(): """ 岭回归的优化方法对波士顿房价预测 """ #获取数据 boston=load_boston() #划分数据集 x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,random_state=22) #标准化 transfer=StandardScaler() x_train=transfer.fit_transform(x_train) x_test=transfer.transform(x_test) #预估器 estimator=Ridge(alpha=0.0001, max_iter=100000) estimator.fit(x_train,y_train) #得出模型 print("岭回归-权重系数为:\n",estimator.coef_) print("岭回归-偏置为:\n",estimator.intercept_ ) #模型评估 y_predict = estimator.predict(x_test) print("预测房价:\n", y_predict) error = mean_squared_error(y_test, y_predict) print("岭回归-均方差误差:\n", error) return None if __name__ == '__main__': linear3()
结果为:
看到上面的例子,我们可以发现其中的特点,那就是都属于两个类别之间的判断。逻辑回归就是解决二分类问题的利器
逻辑回归的输入就是一个线性回归的结果。
那么如何去衡量逻辑回归的预测结果与真实结果的差异呢?
逻辑回归的损失,称之为对数似然损失,公式如下:
接下来我们呢就带入上面那个例子来计算一遍,就能理解意义了。
sklearn.linear_model.LogisticRegression(solver='liblinear', penalty=‘l2’, C = 1.0)
相关数据:https://archive.ics.uci.edu/ml/machine-learning-databases/
代码:
在很多分类场景当中我们不一定只关注预测的准确率!!!!!
比如以这个癌症举例子!!!我们并不关注预测的准确率,而是关注在所有的样本当中,癌症患者有没有被全部预测(检测)出来。
在分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵(适用于多分类)
还有其他的评估标准,F1-score,反映了模型的稳健型
最终AUC的范围在[0.5, 1]之间,并且越接近1越好