机器学习基础(第二章)

机器学习基础(第二章)

目标

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_)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值