代码之家  ›  专栏  ›  技术社区  ›  shantanuo

如何将测试列与列车数据匹配?

  •  -2
  • shantanuo  · 技术社区  · 6 年前

    尝试使用NaiveBayes时出错。

    from sklearn.naive_bayes import GaussianNB
    import pandas as pd
    
    df = pd.read_csv('https://raw.githubusercontent.com/sjwhitworth/golearn/master/examples/datasets/tennis.csv')
    
    X_train = pd.get_dummies(df[['outlook', 'temp', 'humidity', 'windy']])
    y_train = df['play']
    
    gNB = GaussianNB()
    gNB.fit(X_train, y_train)
    
    ndf=pd.DataFrame({'outlook':['sunny'], 'temp':['hot'], 'humidity':['normal'], 'windy':[False]})
    X_test=pd.get_dummies(ndf[['outlook', 'temp', 'humidity', 'windy']])
    
    gNB.predict(X_test)
    

    值错误:操作数无法与形状一起广播(1,4) (9,)

    在这种情况下,使用get-dummies方法是个好主意吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Bal Krishna Jha    6 年前

    显然不是一个好的实践,如Vivek所指出的,但如果你想做的话,这里是代码:

    from sklearn.naive_bayes import GaussianNB
    import pandas as pd
    df = pd.read_csv('https://raw.githubusercontent.com/sjwhitworth/golearn/master/examples/datasets/tennis.csv')
    
    X_train = pd.get_dummies(df[['outlook', 'temp', 'humidity', 'windy']])
    y_train = df['play']
    
    gNB = GaussianNB()
    gNB.fit(X_train, y_train)
    
    ndf=pd.DataFrame({'outlook':['sunny'], 'temp':['hot'], 'humidity':['normal'], 'windy':[False]})
    X_test=pd.get_dummies(ndf[['outlook', 'temp', 'humidity', 'windy']])
    
    dict1 = {}
    X_test.columns
    for i in X_train.columns:
      if i in X_test.columns:
        dict1.update({i:[1]})
      else:
        dict1.update({i:[0]})
    X_test_new = pd.DataFrame(data = dict1)
    
    
    gNB.predict(X_test_new)