机器学习model - sklearn的一些常用的口令与其用法

本文详述了机器学习模型的训练流程,包括选择算法、训练、评估及参数调优。介绍了线性回归、K近邻等模型的使用,以及如何通过交叉验证和网格搜索优化模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.model的算法模型

from sklearn.linear_model import LinearRegression

model = LinearRegression() #这里只是用线性回归算法来举例,还有很多其他的算法~ 括号里面可以输入模型的具体参数,具体什么参数不同模型有着不同的参数。

2.model的训练
model.fit(data_X, data_Y) #data_X, data_Y分别代表了训练集的特征和标签。

3.model的得分
model.score(test_X, test_Y) #用测试集的特征还有标签来对测试的结果进行打分。

4.输出模型的系数
model.coef_ #例如样本是线性回归模型,则会返回他的k值。
model.intercept_ #输出模型与Y轴的交点。

5.输出模型定义的参数
model.get_params()

6.输出模型的预测值
model.predict( ## ) # ‘##’里面是需要用来预测的特征值,输出会是他的结果。
model.predict_proba( ## ) # 输出的是计算出来特征对应的每个标签的可能性。

7.用于从数据集中分割训练集和测试集

from sklearn.cross_validation import train_test_split

具体用法

X_train, Y_train, X_test, Y_test = train_test_split(feature, target, test_size = 0.3)

这里的feature就是我们数据集中的特征,target就是标签,test_size表示我们要从数据集中取出多少来作为我们的测试集。

(在其中运用K折交叉验证的方法

交叉验证的原理图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190729171038907.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk3MTExNg==,size_16,color_FFFFFF,t_70
用5次的测试结果平均一下

代码:

from sklearn.model_selection import cross_val_score
knn = KNeighborsClassifier(n_neighbors=5)
scores = cross_val_score(knn,X,y,cv=5,scoring='accurary')
print(scores.mean())#取平均值

在cross_val_score中参数,knn就是要操作的模型,X,y,是特征和标签,cv是定义K等于几,定义后机器会自动帮我们将数据分割,每次分割的train和test都不一样,这也会让我们的scores有五个值在里面。

8.数据的标准化

#下面这种情况就是我们的特征值不平衡的情况
在这里插入图片描述
注意:标准化是直接对数据集进行处理的

如:

a = np.array([[10,2.7,3.6],
			  [-100,5,-2],
			  [120,20,40],dtype = np.float64
				]])
print(a)
print(preprocessing.scale(a))

结果为:
在这里插入图片描述
由这里可以看出来数据变得更加集中了。

如果想要让数据压缩到指定的范围,则有

a = preprocessing.minmax_scale(a, feature_range=(-1,1))

这里的feature_range里面的范围就是我们想要数据压缩到的范围

9.对于调整单参数学习曲线的写法

k_range = range(1, 31)
k_scores = []
for k in k_range:
	knn = KNeighborsClassifier(n_neighbors=k)
	#loss = -cross_val_score(knn, X, y, cv=10, scoring='mean_squared_error')#用于回归
	scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy') #用于分类
	k_scores.append(scpres_mean())
plt.plot(k_range, k_scores)
plt.xlabel('Value of KNN')
plt.ylable('Cross-Validated Accuracy')
plt.show()

在这里插入图片描述
在其中找score最高的点对应的参数值就OK了~

10.网格搜索调整参数(可以用于多个参数的调整)

from sklearn.model_selection import GridSearchCV

然后定义要搜索的参数和他的范围,用字典的形式定义。

param_grid = {'max_depth':np.arange(1, 20, 1)}   #这里可以有多个参数与它的范围
rfc = RandomForestClassifier(n_estimators=39
							, random_state = 90
							)
GS = GridSearchCV(rfc, param_grid, cv=10) 	 #网格搜索与交叉验证结合
GS.fit(data.data, data.target)			 	#用数据的特征和标签来训练,这里因为用了交叉验证,所以他会自动帮我们分训练集和测试集
print(GS.best_params_)						#输出最好得分时候的参数的取值
print(GS.best_score_)						#输出最好的得分
### kNN算法在机器学习中的应用及其实现 #### 1. kNN算法基本原理 kNN(K-Nearest Neighbors)是一种基于实例的学习方法,其核心思想是通过计算样本之间的相似度来完成分类或回归任务。具体来说,在给定测试样本的情况下,该算法会在训练集中找到与其最近的 \(k\) 个邻居,并根据这些邻居的信息来进行决策[^1]。 对于分类问题,通常采用多数投票的方式决定类别;而对于回归问题,则可以通过平均值或其他统计量得出预测结果[^2]。 #### 2. 距离度量的选择 为了衡量两个样本间的接近程度,kNN依赖某种形式的距离函数。常见的距离度量方式有欧氏距离、曼哈顿距离以及闵可夫斯基距离等。其中,默认情况下多使用欧几里得距离作为默认选项: ```python import numpy as np def euclidean_distance(x, y): return np.sqrt(np.sum((np.array(x) - np.array(y)) ** 2)) ``` 此外,还可以引入权重机制使得更靠近目标点的数据具有更大的影响力[^3]。 #### 3. Python实现kNN算法 以下是利用Python手动编写的一个简单版本kNN分类器代码示例: ```python from collections import Counter class KNNClassifier: def __init__(self, k=3): self.k = k def fit(self, X_train, y_train): self.X_train = X_train self.y_train = y_train def predict(self, X_test): predictions = [] for test_point in X_test: distances = [euclidean_distance(test_point, train_point) for train_point in self.X_train] nearest_indices = np.argsort(distances)[:self.k] nearest_labels = [self.y_train[i] for i in nearest_indices] most_common_label = Counter(nearest_labels).most_common(1)[0][0] predictions.append(most_common_label) return predictions ``` 当然也可以借助`sklearn.neighbors.KNeighborsClassifier`类快速构建模型并调参优化性能表现: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier data = load_iris() X, y = data.data, data.target scaler = StandardScaler().fit(X) X_scaled = scaler.transform(X) X_train, X_test, y_train, y_test = train_test_split( X_scaled, y, stratify=y, random_state=42) knn_clf = KNeighborsClassifier(n_neighbors=5) knn_clf.fit(X_train, y_train) print(f'Accuracy on training set: {knn_clf.score(X_train, y_train):.2f}') print(f'Accuracy on test set: {knn_clf.score(X_test, y_test):.2f}') ``` #### 4. 应用场景扩展 除了传统的分类任务外,kNN还被广泛应用于推荐系统、图像处理等领域当中。例如,在协同过滤技术中可以用来寻找与当前用户兴趣相近的人群从而提供个性化建议;或者是在特征空间内定位未知物体所属种类等问题上也有不错的表现效果. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值