Python 层理化散斑的奇怪结果
当我在分层程序之前删除一些行时,我收到了奇怪的结果 机器学习。我需要调查数据组的ML结果Python 层理化散斑的奇怪结果,python,pandas,Python,Pandas,当我在分层程序之前删除一些行时,我收到了奇怪的结果 机器学习。我需要调查数据组的ML结果 从sklearn.model_选择导入分层hufflesplit def STRATFID(测向、目标、测试_sz=0.2): 剥离=分层剥离剥离(n_剥离=1,测试大小=测试大小,随机状态=42) 对于tr_idx,te_idx在split.split中(df,df[target]): 列车=df.loc[tr_idx] 测试=测向位置[te_idx] 回程列车 df=pd.DataFrame(数据={
从sklearn.model_选择导入分层hufflesplit
def STRATFID(测向、目标、测试_sz=0.2):
剥离=分层剥离剥离(n_剥离=1,测试大小=测试大小,随机状态=42)
对于tr_idx,te_idx在split.split中(df,df[target]):
列车=df.loc[tr_idx]
测试=测向位置[te_idx]
回程列车
df=pd.DataFrame(数据={
“性别”:[1,1,0,1,1,0,0,0,1,0,0,,
“年龄”:[13,45,1,45,15,16,16,16,15,15],
‘胆固醇’:[1,2,2,1,1,1,1,1,1,1,1],
“烟雾”:[0,0,1,1,7,8,3,4,4,2]},
dtype=np.int64)
df1=df.loc[df['age']>13]
X_序列,X_测试=分层FID(df1,[‘性别’],0.2)
打印(X_系列)
我希望对数据进行正确的分层。但我的输出如下:
性别年龄胆固醇烟雾
0楠楠楠楠楠
4 1.0 15.0 1.0 7.0
1 1.0 45.0 2.0 0.0
6 0.0 16.0 1.0 3.0
3 1.0 45.0 1.0 1.0
7 0.0 16.0 1.0 4.0
Nan值不是预期值。。。。
如果我对整个df进行分层(当df1=df时),所有都可以。我做错了什么?
一旦您根据某些特定条件删除了几行并将其存储到新数据框中,新数据框仍保留相同的索引。当你通过这个数据帧进行分层时,它会考虑缺失索引,例如索引0,它不存在于新的数据帧中(按年龄过滤器删除),因此用楠替换它。使用df1重置索引。重置索引(inplace=True)del df1['index'],然后通过分层。
from sklearn.model_selection import StratifiedShuffleSplit
import pandas as pd
import numpy as np
def stratifid(df, target, test_sz = 0.2):
split = StratifiedShuffleSplit(n_splits = 1, test_size = test_sz, random_state = 42)
for tr_idx, te_idx in split.split(df, df[target]):
train = df.loc[tr_idx]
test = df.loc[te_idx]
return train, test
df = pd.DataFrame(data = {
'gender' : [1, 1, 0, 1, 1, 0, 0, 0, 1, 0, ],
'age' : [13, 45, 1, 45, 15, 16, 16, 16, 15, 15],
'cholesterol' : [1, 2, 2, 1, 1, 1, 1, 1, 1, 1],
'smoke' : [0, 0, 1, 1, 7, 8, 3, 4, 4, 2]},
dtype = np.int64)
df1 = df.loc[df['age'] > 13]
df1.reset_index(inplace=True)
del df1['index']
X_train, X_test = stratifid(df1, ['gender'], 0.2)
print(X_train)