当前位置: 首页 > 科技观察

数据挖掘从入门到放弃是线性回归和逻辑回归的其中一种

时间:2023-03-17 12:11:52 科技观察

》数据挖掘算法是基于线性代数、概率论、信息论推导出来的,本专栏先从比较简单的常用算法开始,接下来-up研究是基于TensorFlow的高级算法,最好能参与到人脸识别和NLP的实际项目中,取得一定的成果。”1.理解线性回归模型首先说说回归模型,回归模型研究的是因变量(target)和自变量(predictor)之间的关系,因变量可以是连续的,也可以是离散的,如果是离散的,就是一个分类问题,想一想房价预测模型,我们可以根据房子的大小、户型、位置、南北通透度等自变量来预测房子的售价。这是最简单的回归模型,在初中,回归表达式一般是这样写的,其中x是自变量,y是因变量,w是特征矩阵,b是bias。线性代数在机器学习的推导中,会假设我们用一个表达式来描述假期预测模型,x代表一个房子的特征集,它是一个n×1列向量,一共有m个特征集,θ是一个n×1列向量,也就是我们要获取的未知数。我们采用误差最小的策略,比如有一个预测表达式:y工资=Θ1*学历+Θ2*工作经验+Θ3*技术能力+......+Θn*x+基本工资,预测y值与实际值y_存在差距,策略函数是最小化m个特征集的平方和(真实值y-预测值)。(差值可能为负,所以用平方和);根据正规方程的方法,我们计算θ的偏导数:即给定特征矩阵X和因变量y,我们可以找到使错误率最小的θ值,满足后续的回归模型。懂线性代数的童靴可以看出问题。θ的表达式中有求逆运算,需要保证矩阵是可逆的。这一般是无法保证的。这会导致θ无解,策略失败;2.计算机方法:常规的梯度下降方程需要进行大量的矩阵运算,尤其是矩阵的逆运算,在矩阵较大时会大大增加计算复杂度,而正规方程法对矩阵的偏导数有一定的局限性(不能保证矩阵可逆)。下面介绍梯度下降法,也就是计算机的解法。每次迈出一小步,确保这一小步是最有效的一步,你可以想象你正在下山,你不知道目的地(全局最小值)在哪里,但你可以保证你每次都走最陡的一步;我们的策略保持不变,即让m个特征集的平方和(真实值y-预测值)最小:实现梯度下降法:赋初值θ,逐渐根据公式更新使得J(θ)不断减小,最终收敛。对应的参数θ是解开的。为了推导方便,我们先研究只有一个训练样本时如何计算推导公式。θ各分量的更新公式为:扩展到m个训练数据,参数更新公式为:3.Logistic回归模型Logistic回归和线性回归都属于广义线性模型,而Logistic回归是以线性回归为基础的理论支持,这是一个二元分类模型,也可以扩展到分类问题。通过Sigmoid函数引入非线性因素,可以轻松处理0/1分类问题。首先介绍一下Sigmoid函数:sigmoid函数图像是一条S曲线,取值在[0,1],函数的取值会在远离0的地方快速趋近0或1。sigmoid函数的求导特性是:逻辑回归的预测函数是下图,只是在特征到结果的映射上加了一层函数Mapping,先对特征进行线性求和,然后用函数g(z)预测最假设函数。g(z)可以映射0到1之间的连续值:通过求似然函数,两边取对数后,对θ取偏导数:这样我们就得到了梯度每次迭代的更新方向rise,那么θ的迭代表达式就是:同线性回归模型是同一个表达式并不是巧合,两者之间有着很深的联系;4.回归模型使用了美国金县2014年5月至2015年5月的房屋售价和房屋基本信息。数据分为训练数据和测试数据,分别存储在kc_train.csv和kc_test.csv两个文件中。训练数据主要包括10000条记录和14个字段:销售日期、销售价格、卧室数量、卫生间数量、房屋面积、停车面积、楼层数、房屋评级、建筑面积、地下室面积、建设年份、修复年份、纬度,经度。数据集地址:https://github.com/yezonggang/house_price,按照流程完成模型建立:importpandasaspdfrompandasimportDataFrameimportnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlineimportseabornassnsfromsklearn.linear_modelimportLogisticRegressionfromsklearn.ensembleimportRandomForestClassifierfromsklearn.linear_modelimportLinearRegression#数据读取baseUrl="C:\\Users\\71781\\Desktop\\2020\\ML-20200422\\houre_price\\"house_df=pd.read_csv(baseUrl+'train.csv')test_df=pd.read_csv(baseUrl+'test.csv')house_df.head()#删除无关变量house_df=house_df.drop(['saleTime','year','repairYear','latitude','longitude','buildingSize'],axis=1)test_df=test_df.drop(['saleTime','year','repairYear','latitude','longitude','buildingSize'],axis=1)#modelbuildingX_price=house_df.drop(['price'],axis=1)#X_price.head()Y_price=house_df['price']Y_price.head()LR_reg=LinearRegression()LR_reg.fit(X_price,Y_price)Y_pred=LR_reg.predict(test_df)LR_reg.score(X_price,Y_price)#特征缩放可以选择#new_house=house_df.下降(['价格'],axis=1)#fromsklearn.preprocessingimportMinMaxScaler#minmax_scaler=MinMaxScaler().fit(new_house)#内部拟合,内部参数会变化#scaler_housing=pd.DataFrame(minmax_scaler.transform(new_house),columns=new_house.columns)#mm=MinMaxScaler()#mm.fit(test_df)#scaler_t=mm.transform(test_df)#scaler_t=pd.DataFrame(scaler_t,columns=test_df.columns)推荐文章转载自微信公众号「数据社会」,你可通过以下二维码关注和转载本文,请联系数据机构公众号。