您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 基础医学 > Python与机器学习----身高与体重数据分析(分类器)I
身高与体重数据分析(分类器)Car情报局常用图形展示柱状图直方图箱形图散点图气泡图饼图折线图热力图知识回顾:可视化Car情报局分类有监督学习分类逻辑回归朴素贝叶斯项目:使用身高、体重数据进行性别分类数据读取数据预处理数据分类(逻辑回归、朴素贝叶斯)数据可视化主要教学内容Car情报局一、机器学习的方法机器学习算法模型fit()predict()x_trainy_train测试数据集x_test训练数据集输出结果y_predy_test评估报告Car情报局二、有监督学习在监督学习中,每一个例子都是一对由一个输入对象(通常是一个向量)和一个期望的输出值(也被称为监督信号)。Car情报局二、有监督学习回归(Regression)y是连续值(实数或连续整数),f(x)的输出也是连续值。这种类型的问题就是回归问题。对于所有已知或未知的(x,y),使得f(x,θ)和y尽可能地一致。损失函数通常定义为平方误差。分类(Classification)y是离散的类别标记(符号),就是分类问题。损失函数有一般用0-1损失函数或负对数似然函数等。在分类问题中,通过学习得到的决策函数f(x,θ)也叫分类器。Car情报局三、分类(Classification)LogisticRegression:逻辑回归Bayes:朴素贝叶斯DecisionTree:决策树SVM:支持向量机KNN:K近邻神经网络深度学习Car情报局项目应用:身高与体重(性别分类)Car情报局项目应用:逻辑回归逻辑回归原理:找到一条线,但不是去拟合每个数据点,而是把不同类别的样本区分开来优点:速度快、简单、可解释性好(直接看到各个特征的权重)、易扩展(能容易地更新模型吸收新的数据)、如果想要一个概率框架,动态调整分类阀值。缺点:特征处理复杂、需要归一化和较多的特征工程。应用:两分类问题,常用于数据挖掘,疾病自动诊断,经济预测等领域Car情报局逻辑回归:一、数据读取#coding:utf-8importpadasaspddf=pd.read_csv('hw.csv',delimiter=‘;')print(df)Car情报局逻辑回归:二、数据预处理:标签映射fromsklearnimportpreprocessing#对性别进行数值化处理le=preprocessing.LabelEncoder()df['Gender']=le.fit_transform(df['Gender'])print(df)Car情报局上机时间:15min•数据获取•数据预处理•问题:Male、female分别对应什么值?•实验报告1(1)-(2)题Car情报局逻辑回归:三、数据可视化:观察importmatplotlib.pyplotaspltX=df[['Height','Weight']]Y=df[['Gender']]plt.figure()plt.scatter(df[['Height']],df[['Weight']],c=Y,s=80,edgecolors='black',linewidths=1,cmap=plt.cm.Paired)Car情报局逻辑回归:三、数据可视化:分类xcord11=[];xcord12=[];ycord1=[];xcord21=[];xcord22=[];ycord2=[];n=len(Y)foriinrange(n):ifint(Y.values[i])==1:xcord11.append(X.values[i,0]);xcord12.append(X.values[i,1]);ycord1.append(Y.values[i]);else:xcord21.append(X.values[i,0]);xcord22.append(X.values[i,1]);ycord2.append(Y.values[i]);Car情报局逻辑回归:三、数据可视化:分类plt.figure()plt.scatter(xcord11,xcord12,c='red',s=80,edgecolors='black',linewidths=1,marker='s')plt.scatter(xcord21,xcord22,c='green',s=80,edgecolors='black',linewidths=1)plt.title(u'性别判定(实际值)')plt.xlabel(u'身高')plt.ylabel(u'体重')plt.show()Car情报局上机时间:15min•数据可视化•数据可视化进阶•实验报告2-3题Car情报局逻辑回归:三、模型训练模型训练过程1、初始化分类器2、拟合fit3、预测predict4、准确性评估fromsklearnimportlinear_model#建立回归模型classifier=linear_model.LogisticRegression(solver='liblinear',C=1)#拟合classifier.fit(X,Y.values.ravel())#给出待预测的一个特征output=classifier.predict(X)output=output.reshape(len(output),1)Car情报局逻辑回归:三、模型训练classsklearn.linear_model.LogisticRegression(penalty='l2',dual=False,tol=0.0001,C=1.0,fit_intercept=True,intercept_scaling=1,class_weight=None,random_state=None,solver='liblinear',max_iter=100,multi_class='ovr',verbose=0,warm_start=False,n_jobs=1)solver:优化算法选择,可选:newton-cg,lbfgs,liblinear,sag,saga。默认为liblinear,决定了对逻辑回归损失函数的优化方法:liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,数据多的时候。saga:线性收敛的随机优化算法的变种。c:惩罚因子,正则化系数λ的倒数,float类型,默认为1.0。必须是正浮点型数。像SVM一样,越小的数值表示越强的正则化。用于防止过拟合。Car情报局逻辑回归:三、模型训练#拟合classifier.fit(X,Y.values.ravel())#给出待预测的一个特征output=classifier.predict(X)output=output.reshape(len(output),1)Y.values.ravel():将y的值转化为1维的向量output.reshape(len(output),1):reshape()是数组对象中的方法,用于改变数组的形状。Car情报局逻辑回归:四、预测结果的可视化plt.scatter(df[[‘Height’]],df[[‘Weight’]],c=output,s=80,edgecolors=‘black’,linewidths=1,cmap=plt.cm.Paired)plt.cm中cm全称表示colormap,颜色映射地图paired表示两个相近色彩输出Car情报局逻辑回归:四、可视化进阶x_min,x_max=df[['Height']].values.min()-1.0,df[['Height']].values.max()+1.0y_min,y_max=df[['Weight']].values.min()-1.0,df[['Weight']].values.max()+1.0step_size=0.2x_values,y_values=np.meshgrid(np.arange(x_min,x_max,step_size),np.arange(y_min,y_max,step_size))Car情报局逻辑回归:四、可视化进阶mesh_output=classifier.predict(np.c_[x_values.ravel(),y_values.ravel()])mesh_output=mesh_output.reshape(x_values.shape)#np.c_是按列连接两个矩阵,就是把两矩阵左右相加,要求行数相等plt.pcolormesh(x_values,y_values,mesh_output,cmap=plt.cm.gray)Car情报局上机时间:20min•数据分析与预测•数据可视化•可视化进阶•实验报告4题Car情报局朴素贝叶斯:某个医院早上收了六个门诊病人现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。Car情报局朴素贝叶斯:贝叶斯分类法是基于贝叶斯定理的统计学分类方法。它通过预测一个给定的元组属于一个特定类的概率,来进行分类。朴素贝叶斯分类法假定一个属性值在给定类的影响独立于其他属性的——类条件独立性。•优点:所需估计的参数少,对于缺失数据不敏感。•缺点:假设属性之间相互独立,这往往并不成立。(喜欢吃番茄、鸡蛋,却不喜欢吃番茄炒蛋)、需要知道先验概率、分类决策错误率高。•应用:新闻分类、病人分类等等P(B|A)=P(A|B)P(B)P(A)当A特征发生时,特征B某个值出现的概率已经B特征值的前提下,某个A特征值出现的概率特征B中某个特征值所占的比例特征A中某个特征值所占的比例Car情报局朴素贝叶斯:建立模型fromsklearn.naive_bayesimportMultinomialNB#建立模型classifier=MultinomialNB()#拟合classifier.fit(X,Y.values.ravel())#给出待预测的一个特征output=classifier.predict(X)output=output.reshape(len(output),1)Car情报局上机时间:20min•模型应用•数据可视化•实验报告5-6题•思考:不同方法的区别与优劣分析Car情报局课堂小结重点:•机器学习、有监督学习、分类•逻辑回归•朴素贝叶斯难点:•逻辑回归的理解与参数选择、数据可视化思考:•模型评估:模型的优劣分析作业:实验报告Car情报局THANKYOU!
本文标题:Python与机器学习----身高与体重数据分析(分类器)I
链接地址:https://www.777doc.com/doc-6450967 .html