1.sklearn数据集
2.划分数据集
3.交叉验证
综合案例.py
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler,StandardScaler,LabelEncoder,OneHotEncoder
pd.set_option("max_columns",None) #显示所有列
pd.set_option("max_rows",None) #显示所有行
df=pd.read_csv("insurance.csv")
print(df)
#实例化类的对象
#归一化
scaler=MinMaxScaler()
#标准化
scalers=StandardScaler()
#将标签数据转成数值s
en=LabelEncoder()
#one-hot转换器
onehotenc=OneHotEncoder()
#调用函数转换数据,获取返回数据
#fit_transform用于将原始数据进行转换
df[["bmi","charges"]]=scaler.fit_transform(df[["bmi","charges"]])
df[["bmi","charges"]]=scalers.fit_transform(df[["bmi","charges"]])
df["region"]=en.fit_transform(df["region"])
data=onehotenc.fit_transform(df[["sex","smoker"]])#将字符型数据转换为二维数组
data1=onehotenc.inverse_transform(data) #将二维数组转换回原数组
data2=onehotenc.get_feature_names_out() #获取特征名称
print(data,data1,data2)
字典特征提取.py
from sklearn.feature_extraction import DictVectorizer #字典特征提取
import pandas as pd
data=[{"city":"北京","temperature":30},
{"city":"上海","temperature":55},
{"city":"甘肃","temperature":18}]
v=DictVectorizer()
obj=v.fit_transform(data)
print("特征名称:n",v.get_feature_names_out())
print("二维矩阵:n",obj.toarray())
文本特征提取.py
from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer import pandas as pd listobj=["i like python,i like python web too","you like python"] #实例化对象 rizer=TfidfVectorizer()#统计单词出现的频率 count=CountVectorizer()#对单词计数 obj=rizer.fit_transform(listobj).toarray() data=count.fit_transform(listobj).toarray() names=rizer.get_feature_names_out() names1=rizer.get_feature_names_out() print(pd.DataFrame(obj,columns=names)) print(pd.DataFrame(data,columns=names1))
文本特征提取1.py
```python from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer import pandas as pd import jieba data=""" 夏天来了,蓝星人和蚊子的战争也拉开了序幕。被咬得满身包就已经足够烦人,蚊媒疾病的困扰更是要命。为了抵抗蚊子,人们电蚊香、驱蚊水齐上阵,还展开了神秘的东方结界——蚊帐。不过,在忙着赶走蚊子的同时,你有没有好奇过,它们到底是怎么叮人的? 在不少人眼中,吸血的雌蚊子似乎就是一个个飞行的迷你注射器——它们用自己的小针管扎向血管,打点坏东西进去,再吸走血液。不过事实上,蚊子的吃饭家伙可远没那么简单。 蚊子嘴:剑鞘藏着六把“剑” 蚊子的口器可不是简单的一根管,如果把它解剖一下,就会发现里面其实还藏着更多结构,这样的结构一共有6条。 """ data_new=jieba.lcut(data) #实例化对象 rizer=TfidfVectorizer() count=CountVectorizer(stop_words=["飞行","如果","蚊子","发现"]) print(count) print(count.fit_transform(data_new).toarray()) print(count.get_feature_names_out())
鸢尾花.py
from sklearn.datasets import load_iris import pandas as pd import matplotlib.pyplot as plt iris=load_iris() # iris.data 鸢尾花特征数据 # iris.feature_name 鸢尾花特征名称 # iris.target 鸢尾花类别【0,1,2】 # iris.target_names 鸢尾花类别名称【'setosa','versicolor','virginica'】 print(iris) # 特征绘制成散点图 df=pd.DataFrame(iris.data,columns=iris.feature_names) plt.figure(figsize=(12,8)) ax1=plt.subplot(221) ax1.scatter(df["sepal length (cm)"],df["sepal width (cm)"],c=iris.target) ax2=plt.subplot(222) ax2.scatter(df["petal length (cm)"],df["petal width (cm)"],c=iris.target) ax3=plt.subplot(223) ax3.scatter(df["sepal length (cm)"],df["petal length (cm)"],c=iris.target) ax4=plt.subplot(224) ax4.scatter(df["sepal width (cm)"],df["petal width (cm)"],c=iris.target) plt.show()
knn数据.py
from sklearn.datasets import load_iris from sklearn.neighbors import KNeighborsClassifier #加载数据集 iris=load_iris() print(iris) #实例化knn算法的对象 knn=KNeighborsClassifier(n_neighbors=5) knn.fit(iris.data,iris.target) #data是特征值,target是目标值 #预测新数据 target=knn.predict([[2.1,5.0,3.2,3.5]]) #可以是一行多列或多行多列,二维数据 print(target) print(knn.predict_proba([[2.1,5.0,3.2,3.5]])) #每种类别的比例 print(iris.target_names[target])
划分数据集.py
from sklearn.model_selection import train_test_split from sklearn.datasets import load_iris from sklearn.neighbors import KNeighborsClassifier #加载数据集 iris=load_iris() print(iris) #划分数据集 特征值和目标值一分为二 X_train,X_test,Y_train,Y_test=train_test_split(iris.data,iris.target,test_size=0.3,random_state=30) #x=特征 y=目标 #train=训练,学习 #test=测试 #学习一部分训练集,另一部分来打分 测试集 knn=KNeighborsClassifier(n_neighbors=7) knn.fit(X_train,Y_train) #学习训练集,传入训练集的特征和目标值 #预测 target_new=knn.predict(X_test)#传入测试集的特征 print(target_new) print(target_new==Y_test) #将预测的目标与原则试集目标值进行对比 print(knn.score(X_test,Y_test))#利用测试集的特征和目标值对算法对象打分
交叉验证
from sklearn.model_selection import train_test_split,cross_val_score
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#加载数据
iris=load_iris()
#划分数据集
X_train,X_test,Y_train,Y_test=train_test_split(iris.data,iris.target,test_size=0.3,random_state=30)
k_range=range(1,51)#作为邻居的数量
scores_list=[]
#创建算法对象
for i in k_range:
knn=KNeighborsClassifier(n_neighbors=i)
#利用cross_val_score打分 返回多个分数 cv=10
scores=cross_val_score(knn,X_train,Y_train,cv=10)#将训练集的特征及目标传入函数,得到该分类器的打分情况
scores_list.append(scores.mean())
print("邻居数量%d,得分:%f"%(i,scores.mean()))
#用折线图或散点图绘制(邻居数量与得分的关系)
plt.scatter(k_range,scores_list)
plt.plot(k_range,scores_list)
plt.show()
网格交叉验证
from sklearn.model_selection import GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris
iris=load_iris()
param_data={
"n_neighbors":range(1,31),
"p":[1,2],
"weights":["uniform","distance"]
}
knn=KNeighborsClassifier()
#传入knn分类器对象,param_grid是分类器对象可以设置的参数(字典格式)
gcs=GridSearchCV(knn,param_grid=param_data,cv=10)
#让gsc对象学习和预测
gcs.fit(iris.data,iris.target)
gcs.predict([[2.5,5.2,3.2,2.5]])
print("最优的分数:",gcs.best_score_)
print("最优的参数值:",gcs.best_params_)
print("最优的分类器:",gcs.best_estimator_)



