线性回归算法原理与总结 (8)

之前我们介绍过knn,实际上Knn不仅可以解决分类问题,还可以解决回归问题,我们来看看sklearn中如何使用Knn进行回归。

from sklearn.neighbors import KNeighborsRegressor from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split boston = load_boston() X = boston.data y = boston.target X_train, X_test, y_train, y_test = train_test_split(X, y) linear = KNeighborsRegressor() linear.fit(X_train, y_train) print(linear.score(X_test, y_test)) # 0.5733855243681796

可以看到,效果没有线性回归好。但是呢?我们在初始化的时候,没有指定超参数,那么我们需要进行网格搜索,来找到一个最好的超参数,看看相应的score是多少。

from sklearn.neighbors import KNeighborsRegressor from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.model_selection import GridSearchCV boston = load_boston() X = boston.data y = boston.target X_train, X_test, y_train, y_test = train_test_split(X, y) linear = KNeighborsRegressor() grid_params = [ { "n_neighbors": list(range(1, 10)), "weights": ["uniform"] }, { "n_neighbors": list(range(1, 10)), "weights": ["distance"], "p": list(range(1, 6)) } ] cv = GridSearchCV(linear, grid_params, n_jobs=-1) cv.fit(X_train, y_train) best_params = cv.best_params_ best_estimator = cv.best_estimator_ print(best_params) # {\'n_neighbors\': 4, \'p\': 1, \'weights\': \'distance\'} print(best_estimator.score(X_test, y_test)) # 0.7032252003791625 """ 结果显示,当n_neighbors=4,p=1也就是去曼哈顿距离,weights按照距离反比的时候,效果最好 分数为0.7032252003791625,比默认的要好不少,但分数依旧是没有线性回归高的 """ 线性回归的可解释性和更多思考

线性回归为什么具有可解释性呢?就拿我们的波士顿房产数据为例。

我们求出来一系列的相关系数,有正有负。排序之后,系数越小(负数的绝对值越大),对房屋价格的下降作用越大,系数越大,那么对房屋价格的上升作用越大。比如,对系数排序之后,会发现第一个系数对应的是周边一氧化氮的浓度,这是一个有害气体,如果有的话那么价格肯定会低,第二个系数也是负数,代表的是距离波士顿城市的一些劳务中心的距离,这个距离越大,说明房价也越低,因为上下班会变得麻烦;而最后一个系数,也就是对房屋价格上升作用最大的系数,对应的是房屋里面房间的个数,倒数第二个系数对应的是是否临河,房间多、临河,那么对应的价格会高。这些都是非常合理的,通过这些分析,会发现线性回归不管预测的分数是高还是低,至少是具备可解释性的。

线性回归算法和K*邻算法之间有哪些区别呢?

1. 线性回归是典型的参数学*, K*邻是典型的非参数学*

2. 线程回归只能解决回归问题, 虽然线性回归是很多分类方法的基础(比如:逻辑回归), K*邻既能解决分类问题,又能解决回归问题

3. 对数据有假设:要求具备线性关系, K*邻对数据没有假设。但是如果我们的数据具有线性关系, 并且线性关系越强, 那么线性回归分类的效果也越好

4. 对数据具有强解释性, 不管模型的好坏如何, 至少可以自圆其说

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsxyz.html