将数值变量分类为高或低



我的数据集中有一个功能,我想将其分为高或低。数据集本身包含34个特征,我想分类为高或低的特征是一个数字,位于最后一列,标记为"绝对向上移动"。我无法复制和粘贴整个数据集,因为它有28000多个观测值,包含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分归类为什么?我会写一个线性阈值单位算法吗?我想把绝对向上移动特征转换成一个分类变量,它表示高或低,而不是数值,但我不知道从哪里开始。

到目前为止,我只有:

  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

首先绘制该列的直方图,并确定它是什么样的分布。如果它是正态分布N(mu, sigma),则可以将高于mean + n * sigma的任何东西归类为高,其中西格玛是标准差,n是您选择的因子,例如n=2或3是流行的选择。

对于学习部分,你可以制作一个算法,从一组给定的高/低分类中学习乘数应该是多少,以匹配"高"one_answers"低"的普遍接受范围。

最新更新