将数字变量分类为高或低

时间:2016-04-17 17:09:11

标签: python machine-learning

我的数据集中有一个功能,我想将其归类为高或低。数据集本身包含34个特征,我想要分类为高或低的特征是数字,并且在最后一列标记为“absoluteupwardmobility”。我无法复制和粘贴整个数据集,因为它超过28,000个观测值并包含34个特征。我将粘贴最后8列和前22行

medianchildincome   parentincomep75 childincomep75  parentincomep90  childincomep90 parentincomep99 childincomep99  absoluteupwardmobility
31900   87700   62100   121600  90400   227400  158000  38.4
31900   87700   62100   121600  90400   227400  158000  38.4
31900   87700   62100   121600  90400   227400  158000  38.4
31900   87700   62100   121600  90400   227400  158000  38.4
31900   87700   62100   121600  90400   227400  158000  38.4
31900   87700   62100   121600  90400   227400  158000  38.4
31900   87700   62100   121600  90400   227400  158000  38.4
31900   87700   62100   121600  90400   227400  158000  38.4
31900   87700   62100   121600  90400   227400  158000  38.4
30200   90500   59500   135600  93900   444500  194500  39.6
30200   90500   59500   135600  93900   444500  194500  39.6
30200   90500   59500   135600  93900   444500  194500  39.6
30200   90500   59500   135600  93900   444500  194500  39.6
30200   90500   59500   135600  93900   444500  194500  39.6
30200   90500   59500   135600  93900   444500  194500  39.6
30200   90500   59500   135600  93900   444500  194500  39.6
30200   90500   59500   135600  93900   444500  194500  39.6
30200   90500   59500   135600  93900   444500  194500  39.6
22400   60800   44600   105600  75800   235700  153400  36.1
22400   60800   44600   105600  75800   235700  153400  36.1
22400   60800   44600   105600  75800   235700  153400  36.1

请注意绝对向上运动变化:38.4,39.6,36.1等。绝对运动的值范围是23.7到63.8。我想写一个算法来学习是否将这些数字分类为高或低。很明显,63.8将被归类为高,23.7将被归类为低,但我不知道将39.6分类为什么? 我会写一个线性阈值单位算法吗?我想将absoluteupwardmobility特性转换为分类变量,该变量表示高或低而不是数值,但我不知道从哪里开始。

到目前为止我只有:

  import numpy as np
  import pandas as pd
  import matplotlib.pyplot as plt

  #   Read csv file
  df = pd.read_csv('raw_data_for_project2.csv')
  y  =  df[['absoluteupwardmobility']]   # Get last column
  X  =  df[df.columns.difference(['absoluteupwardmobility'])]    # X    includes columns 0,1,2,...,33

1 个答案:

答案 0 :(得分:0)

首先绘制该列的直方图,然后确定它的分布类型。如果它是正态分布N(mu, sigma),您可以将高于mean + n * sigma的任何内容归类为高,其中sigma是标准偏差,n是您选择的因素,例如n = 2或3是受欢迎的选择。

对于学习部分,您可以制作一个算法,该算法从一组高/低给定分类中学习该乘数应该是什么,以匹配公共接受的范围"高"和"低"。

相关问题