我在尝试生成一个简单DF的共线性分析时遇到了问题(见下文)。我的问题是,每次尝试运行该函数时,都会检索到以下错误消息:
KeyError: "None of [Int64Index([0, 1, 2, 3], dtype='int64')] are in the [columns]"
下面是我正在使用的代码
read_training_set = pd.read_csv('C:\\Users\\rapha\\Desktop\\New test\\Classeur1.csv', sep=";")
training_set = pd.DataFrame(read_training_set)
print(training_set)
def calculate_vif_(X):
thresh = 5.0
variables = range(X.shape[1])
for i in np.arange(0, len(variables)):
vif = [variance_inflation_factor(X[variables].values, ix) for ix in range(X[variables].shape[1])]
print(vif)
maxloc = vif.index(max(vif))
if max(vif) > thresh:
print('dropping \'' + X[variables].columns[maxloc] + '\' at index: ' + str(maxloc))
del variables[maxloc]
print('Remaining variables:')
print(X.columns[variables])
return X
X = training_set
X2 = calculate_vif_(X)
我试图运行函数的DF如下所示。
Year Age Weight Size
0 2020 10 100 170
1 2021 11 101 171
2 2022 12 102 172
3 2023 13 103 173
4 2024 14 104 174
5 2025 15 105 175
6 2026 16 106 176
7 2027 17 107 177
8 2028 18 108 178
我在这里有两个猜测;但不知道如何解决这个问题:
-猜测1:np。arrange导致与标头发生某种冲突
-猜想2:问题来自blankseperator,它阻止函数正确地从一列跳转到另一列。问题是,我的CSV文件已经有分隔符(我不知道为什么要诚实,因为我手动创建的文件,并将其保存为常规CSV与分隔符)。
现在还不知道如何解决这个问题,这里有人有见解吗?
最好的
明白了,我修改了整件事,看起来很有效。请参见下面的外观。
非常感谢你的帮助
variables = list(range(X.shape[1]))
for i in variables:
vif = [variance_inflation_factor(X.iloc[:, variables].values, ix)
for ix in range(X.iloc[:, variables].shape[1])]
maxloc = vif.index(max(vif))
if max(vif) > thresh:
print('dropping \'' + X.iloc[:, variables].columns[maxloc] +
'\' at index: ' + str(maxloc))
del variables[maxloc]
print('Remaining variables:')
print(X.columns[variables])
return X.iloc[:, variables]
X = training_set
X2 = calculate_vif_(X)```
此错误是由此代码段X[variables]引起的。值
。将变量
,即范围
,转换为列表
。
顺便说一句,代码非常混乱。你为什么打电话给np。当变量已经是一个范围时,是否设置范围?为什么要使用一定数量的列来索引行?
从上面的注释可以看出,您认为是按列编号索引列,但实际上是索引行。如果您使用
loc``或
iloc``来明确说明您试图索引的内容,那么其中一些混淆将被消除。
我遇到了一个挑战,我必须读取CSV文件并将其读取,直到定义的可变大小限制(BATCH_SIZE)。读取 CSV 中的行数后,将其发送到不同的 AWS API。由于我的CSV文件大小可以是1Gb到2Gb的任何地方,因此我避免使用JSR223 CSV文件读取。我想知道如何使用JMeter和CSV数据集配置来实现它。
问题内容: 我是Java的新手,所以如果这是一个很小的错误,请原谅我,这是 我的代码: 当我在编译后运行它时,第18行(n = System.in.read())被跳过。 我得到的输出是这样的: 对(1-5)投票: 1输入0退出,再次输入1投票: 对(1-5)投票: 2输入0退出,再次输入1投票: 对(1)投票-5): ^ C 的值not 会使程序成为无限循环。 谢谢您的帮助。 问题答案: 我认为
我是一名铁锈新手,尝试阅读两个数字并计算它们的商: 但是当我试图编译它时,我得到了以下错误重复了几次: src/safe_div.rs:12: 12:12:21错误:不匹配类型:预期
我试图读取3温度设备使用WinForm和Modbus 485协议。基本上,我必须定期向每个设备写入命令,等待响应,当我得到响应时,处理它。每个设备都有一个唯一的通信地址。为了定期发送命令,我使用了计时器。这就是我发送命令的方式和处理响应的地方: 对于每个设备,等等。这是我的serialport数据接收事件: 所以我的沟通应该是: 然后再次发送命令device1。问题是,我有时得到通信超时错误,我知
TensorFlow程序读取数据一共有3种方法: 供给数据(Feeding): 在TensorFlow程序运行的每一步, 让Python代码来供给数据。 从文件读取数据: 在TensorFlow图的起始, 让一个输入管线从文件中读取数据。 预加载数据: 在TensorFlow图中定义常量或变量来保存所有数据(仅适用于数据量比较小的情况)。 目录 数据读取 供给数据(Feeding) 从文件读取数据
可以通过document.cookie直接读取cookie的内容: var strCookie = document.cookie; 此时,strCookie是一个由该域名下的所有cookie的名/值对所组成的字符串,名/值对间以“分号加空格”分隔。为了方便查看,可以使用split()方法将cookie中的名/值对解析出来,得到一个cookie的列表。然后,再使用相应的解码方式,把cookie