gpt4 book ai didi

python - 在 Python 中将单列拆分为多个子列/数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:08 24 4
gpt4 key购买 nike

我正在尝试在 Python 中实现决策树算法来预测丢失的输入数据。

假设我有一列包含 99 个条目。在这 99 个条目中,有 20 个为 NaN。我想将这个单个数组分解为 x 个大小为 y(在本例中为 y = 5)的子数组。

具有完整单元的子数组被分配给特征,而包含NaN的子数组被分配给目标

 # breaking target array into subarrays
subarray_size = 5
target = []
features = []

# complete break up and assign to array "chunks"
chunks = [test[x : x + subarray_size] for x in xrange(0, len(test), subarray_size)]

# assigns NaN containg subarray to "target" and filled subarrays to "features"
for i in chunks:
if (np.where(np.isnan(i)))[0].shape[0]:
target.append(i)
else:
features.append(i)

代码一直有效,直到 for 循环结束。现在我有了功能目标,我尝试了下面的代码块

from sklearn.cross_validation import train_test_split as tts

X_train, X_test, y_train, y_test = tts(features, target, test_size=0.2)

产生了这个错误:

    202     if len(uniques) > 1:
203 raise ValueError("Found input variables with inconsistent numbers of"
--> 204 " samples: %r" % [int(l) for l in lengths])
205
206

ValueError: Found input variables with inconsistent numbers of samples: [5, 15].

我认为错误发生在数组操作期间的某个地方。我很难修复它。有什么建议/见解/建议吗?

编辑:下面是示例“测试”列。不知道如何将其放入表格格式。抱歉视觉效果不佳。

Site2_ThirdIonizationEnergy

39.722
39.722
33.667
39.722
39.722
23.32
25.04
NaN
27.491
22.99
39.722
23.32
25.04
NaN
27.491
22.99
33.667
23.32
33.667
NaN
27.491
22.99
39.722
23.32
25.04
NaN
27.491
22.99
19.174
19.174
19.174
19.174
39.722
39.722
33.667
39.722
39.722
23.32
25.04
NaN
27.491
22.99
39.722
23.32
25.04
NaN
27.491
22.99
33.667
23.32
33.667
NaN
27.491
22.99
39.722
23.32
25.04
NaN
27.491
22.99
39.722
39.722
33.667
39.722
39.722
39.722
33.667
39.722
39.722
23.32
25.04
NaN
27.491
22.99
39.722
23.32
25.04
NaN
27.491
22.99
33.667
23.32
33.667
NaN
27.491
22.99
39.722
23.32
25.04
NaN
27.491
22.99
21.62
21.62
21.62
21.62
39.722
39.722
33.667

最佳答案

好吧,看看test以及创建featurestarget的方式,很明显特征的数量和目标的数量是不同的。我想您可能对这两个对象的含义感到困惑。

对于给定的记录,您将同时拥有一组描述该记录的特征和一个目标,代表您知道该记录所属的类别。因此,如果您试图预测谁将在泰坦尼克号中幸存,您的特征可能是这样的:寄宿等级、人的年龄、人的性别以及目标是天气或他们是否幸存。

对于每个人,您都需要他们的特征和目标。然后,您的分类器将对特征和目标进行训练,以了解特征中的哪些模式与哪些目标相关联。然后,稍后,当您看到一个知道特征但不知道目标的新示例时,predict 方法将采用学到的模式并返回对目标可能是什么的最佳猜测(或者更确切地说) ,目标每个可能值的概率)。

目标不是您要填写的数据。它是已知的结果,例如您将用来教算法如何猜测未知值的示例。在训练阶段,您必须告诉算法答案应该是什么。

您想要做的不是分类问题,而是您试图“估算缺失值”。这需要一种与您正在尝试的方法完全不同的方法。

如果您的数据是时间序列(即,每个值均取自某个测量的某个时间点),那么您可以考虑使用移动平均值(ARMA 或 ARIMA)或“指数平滑”来估算缺失值。

不过,根据您的目的,您也可能只能取周围值的平均值,或几个周围值的中值。

关于python - 在 Python 中将单列拆分为多个子列/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48956602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com