如何将均值填充到excel缺失值填充中

Logistic回归的使用_python_ThinkSAAS
Logistic回归的使用
Logistic回归的使用
Logistic回归的使用和缺失值的处理
从疝气病预测病马的死亡率
数据集:
UCI上的数据,368个样本,28个特征
测试方法:
交叉测试
实现细节:
1.数据中因为存在缺失值所以要进行预处理,这点待会再单独谈2.数据中本来有三个标签,这里为了简单直接将未能存活和安乐死合并了3.代码中计算10次求均值
缺失值的处理:
一般来说有这么几种方法处理缺失值:
人工填写缺失值
使用全局变量填充缺失值
忽略有缺失值的样本
使用属性的中心度量(均值或中位数等)填充缺失值
使用与给定元祖同一类的所有样本的属性均值或中位数
使用最可能的值(需要机器学习算法推到)对不同的数据我们要采用不同的方法,这里考虑到我们用Logistic回归那么我们可以采用0填充,因为用0在更新weight = weight + alpha * error * dataMatrix[randIndex]的时候不会产生更新,并且sigmoid(0)=0.5,他对结果也不会产生影响。
1 #coding=utf-8
2 from numpy import *
4 def loadDataSet():
dataMat = []
labelMat = []
fr = open(&testSet.txt&)
for line in fr.readlines():
lineArr = line.strip().split()
dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
labelMat.append(int(lineArr[2]))
return dataMat, labelMat
14 def sigmoid(inX):
return 1.0/(1+exp(-inX))
17 def stocGradAscent1(dataMatrix, classLabels, numIter=150):
m,n = shape(dataMatrix)
#alpha = 0.001
weight = ones(n)
for j in range(numIter):
dataIndex = range(m)
for i in range(m):
alpha = 4/ (1.0+j+i) +0.01
randIndex = int(random.uniform(0,len(dataIndex)))
h = sigmoid(sum(dataMatrix[randIndex]*weight))
error = classLabels[randIndex] - h
weight = weight + alpha * error * dataMatrix[randIndex]
del(dataIndex[randIndex])
return weight
33 def classifyVector(inX, weights):
prob = sigmoid(sum(inX*weights))
if prob & 0.5: return 1.0
else: return 0.0
38 def colicTest():
frTrain = open(&horseColicTraining.txt&); frTest = open(&horseColicTest.txt&)
trainingSet = []; trainingLabels = []
for line in frTrain.readlines():
currLine = line.strip().split(&t&)
lineArr =[]
for i in range(21):
lineArr.append(float(currLine[i]))
trainingSet.append(lineArr)
trainingLabels.append(float(currLine[21]))
trainWeights = stocGradAscent1(array(trainingSet), trainingLabels, 1000)
errorCount = 0; numTestVec = 0.0
for line in frTest.readlines():
numTestVec += 1.0
currLine = line.strip().split(&t&)
lineArr =[]
for i in range(21):
lineArr.append(float(currLine[i]))
if int(classifyVector(array(lineArr), trainWeights))!= int(currLine[21]):
errorCount += 1
errorRate = (float(errorCount)/numTestVec)
print "the error rate of this test is: %f" % errorRate
return errorRate
62 def multiTest():
numTests = 10; errorSum=0.0
for k in range(numTests):
errorSum += colicTest()
print "after %d iterations the average error rate is: %f" % (numTests, errorSum/float(numTests))
68 def main():
multiTest()
71 if __name__ == &__main__&:
main()
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信查看: 1946|回复: 5
因子分析,得分均值为0 出现缺失值
主题帖子积分
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
今天分析一个量表的时候,出现了3个问题,在学习的时候 没有人讲过。最后问了&&@spss版主 得出了解决方法问题1:得到的主因子的得分平均值全部为0
问题2:因子得分 很多缺失值
问题3:怎么计算综合得分因子
12.png (7.98 KB, 下载次数: 6)
19:09 上传
33.png (8.74 KB, 下载次数: 4)
19:09 上传
问题原因:
1.在原始因子当中,缺失值过多问卷中用“0”表示缺失值,通过Excel ,把大于2个缺失值的记录给剔除掉。最后得到700个有效样本量。
=COUNTIF(F2:AO2,0)复制代码
2.最后平均值计算得到的是0,原因就是 spss在自动计算的时候,做了标准化,保证不同量级的数据可以做,主成分分析的平均值,最后的结果当然是0了。
3.计算的方法还是通过:权重来加权:综合得分在spss中不能自动计算的,加权建议通过Excel 计算,会比spss 快捷。
首先,factor会分析一个component transform matrix,然后把这个表的数据输入到spss里面,分别命名变量a1 a2; 点击transform里面点击compute variable按钮,在对话框中输入等式:t1=a1/a1对应的特征值,点击ok即可得出以t1为变量名的第一特征向量,同样得出t2。
这样就可以得出一个以t1&&t2的特征向量矩阵;这样主成分Y1=t1*x1+t2*x2,x1 x2为经过标准化的标准变量。
QQ截图22.png (64.75 KB, 下载次数: 6)
19:15 上传
5.最后 因子得分是什么意思?
通过旋转矩阵,我给因子1 取名 团队合作能力,因子2 就是 抗压能力,因子3 。。。。。
这里得到0表示这个人的水平和平均值一样,如果大于0,表示大于平均水平,那么他的能力也就越强!
注意这里的因子得分,是通过标准化的,就是上面看到的均值为0,标准差为1的分布。
QQ截图55.png (74.39 KB, 下载次数: 6)
19:17 上传
DMER 站长&&原创 转载说明出处
主题帖子积分
楼上的正解。缺失值太多,宁愿缺着,也不要用0填补。缺失值和0是不一样的,太多0,是无法计算相关系数矩阵的,所以会导致因子分析甚至出错。
如果您在数据分析过程中遇到任何问题,请加QQ,技术支持:/
主题帖子积分
楼上的正解。缺失值太多,宁愿缺着,也不要用0填补。缺失值和0是不一样的,太多0,是无法计算相关系数矩阵的,所以会导致因子分析甚至出错。
如果您在数据分析过程中遇到任何问题,请加QQ,技术支持:/
主题帖子积分
楼上的正解。缺失值太多,宁愿缺着,也不要用0填补。缺失值和0是不一样的,太多0,是无法计算相关系数矩阵的,所以会导致因子分析甚至出错。
如果您在数据分析过程中遇到任何问题,请加QQ,技术支持:/
主题帖子积分
楼上的正解。缺失值太多,宁愿缺着,也不要用0填补。缺失值和0是不一样的,太多0,是无法计算相关系数矩阵的,所以会导致因子分析甚至出错。
如果您在数据分析过程中遇到任何问题,请加QQ,技术支持:/
主题帖子积分
楼上的正解。缺失值太多,宁愿缺着,也不要用0填补。缺失值和0是不一样的,太多0,是无法计算相关系数矩阵的,所以会导致因子分析甚至出错。
如果您在数据分析过程中遇到任何问题,请加QQ,技术支持:/
活跃且尽责职守的版主
为论坛做出突出贡献的会员如何处理数据中的缺失值 - 无影随想 - 博客园
随笔 - 7, 文章 - 0, 评论 - 2, 引用 - 0
作者:无影随想&时间:2016年1月。&出处:声明:版权所有,转载请联系作者并注明出处
现实世界中的数据往往非常杂乱,未经处理的原始数据中某些属性数据缺失是经常出现的情况。另外,在做特征工程时经常会有些样本的某些特征无法求出。路漫漫其修远兮,数据还是要继续挖的,本文介绍几种处理数据中缺失值的主要方法。
一、常用方法
最简单的方法是删除,删除属性或者删除样本。如果大部分样本该属性都缺失,这个属性能提供的信息有限,可以选择放弃使用该维属性;如果一个样本大部分属性缺失,可以选择放弃该样本。虽然这种方法简单,但只适用于数据集中缺失较少的情况。
2. 统计填充
对于缺失值的属性,尤其是数值类型的属性,根据所有样本关于这维属性的统计值对其进行填充,如使用平均数、中位数、众数、最大值、最小值等,具体选择哪种统计值需要具体问题具体分析。另外,如果有可用类别信息,还可以进行类内统计,比如身高,男性和女性的统计填充应该是不同的。
3. 统一填充
对于含缺失值的属性,把所有缺失值统一填充为自定义值,如何选择自定义值也需要具体问题具体分析。当然,如果有可用类别信息,也可以为不同类别分别进行统一填充。常用的统一填充值有:&空&、&0&、&正无穷&、&负无穷&等。
4. 预测填充
我们可以通过预测模型利用不存在缺失值的属性来预测缺失值,也就是先用预测模型把数据填充后再做进一步的工作,如统计、学习等。虽然这种方法比较复杂,但是最后得到的结果比较好。
二、具体分析
上面两次提到具体问题具体分析,为什么要具体问题具体分析呢?因为属性缺失有时并不意味着数据缺失,缺失本身是包含信息的,所以需要根据不同应用场景下缺失值可能包含的信息进行合理填充。下面通过一些例子来说明如何具体问题具体分析,仁者见仁智者见智,仅供参考:
&年收入&:商品推荐场景下填充平均值,借贷额度场景下填充最小值;
&行为时间点&:填充众数;
&价格&:商品推荐场景下填充最小值,商品匹配场景下填充平均值;
&人体寿命&:保险费用估计场景下填充最大值,人口估计场景下填充平均值;
&驾龄&:没有填写这一项的用户可能是没有车,为它填充为0较为合理;
&本科毕业时间&:没有填写这一项的用户可能是没有上大学,为它填充正无穷比较合理;
&婚姻状态&:没有填写这一项的用户可能对自己的隐私比较敏感,应单独设为一个分类,如已婚1、未婚0、未填-1。}

我要回帖

更多关于 excel缺失值填充 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信