我的数据集中有一个功能,我想将其归类为高或低。数据集本身包含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
答案 0 :(得分:0)
首先绘制该列的直方图,然后确定它的分布类型。如果它是正态分布N(mu, sigma)
,您可以将高于mean + n * sigma
的任何内容归类为高,其中sigma是标准偏差,n
是您选择的因素,例如n = 2或3是受欢迎的选择。
对于学习部分,您可以制作一个算法,该算法从一组高/低给定分类中学习该乘数应该是什么,以匹配公共接受的范围"高"和"低"。