Evalml: فشل اختبار الوحدة بعد الترقية إلى pandas 1.0.0

تم إنشاؤها على ٣٠ يناير ٢٠٢٠  ·  10تعليقات  ·  مصدر: alteryx/evalml

خطوات إعادة إنتاج الخطأ:

  1. سحب من سيد. سيؤدي هذا إلى إعادة إنتاج خطأ استيراد s3fs.
  2. قم بترقية s3fs محليًا عبر النقطة إلى 0.3.0 أو أعلى. استدعِ الآن load_fraud () لترى الخطأ الثاني numpy / pandas.

مشكلة:
فشل اختبار وحدة CircleCI الآن لأنه تم تثبيت pandas 1.0.0 ، ويتطلب pandas 1.0.0 الآن s3fs 0.3.0.

evalml/demos/fraud.py:17: in load_fraud
    n_rows=n_rows
evalml/preprocessing/utils.py:31: in load_data
    feature_matrix = pd.read_csv(path, index_col=index, nrows=n_rows, **kwargs)
test_python/lib/python3.7/site-packages/pandas/io/parsers.py:676: in parser_f
    return _read(filepath_or_buffer, kwds)
test_python/lib/python3.7/site-packages/pandas/io/parsers.py:431: in _read
    filepath_or_buffer, encoding, compression
test_python/lib/python3.7/site-packages/pandas/io/common.py:182: in get_filepath_or_buffer
    from pandas.io import s3
test_python/lib/python3.7/site-packages/pandas/io/s3.py:9: in <module>
    "s3fs", extra="The s3fs package is required to handle s3 files."
E                   ImportError: Pandas requires version '0.3.0' or newer of 's3fs' (version '0.2.2' currently installed).

ومع ذلك ، تؤدي ترقية s3fs إلى 0.3.0 إلى حدوث هذه المشكلة التالية مع X.corwith (y) أثناء إنشاء المستندات بدلاً من ذلك:

~/evalml/test_python/lib/python3.7/site-packages/numpy/lib/function_base.py in corrcoef(x, y, rowvar, bias, ddof)
   2524         warnings.warn('bias and ddof have no effect and are deprecated',
   2525                       DeprecationWarning, stacklevel=3)
-> 2526     c = cov(x, y, rowvar)
   2527     try:
   2528         d = diag(c)

<__array_function__ internals> in cov(*args, **kwargs)

~/evalml/test_python/lib/python3.7/site-packages/numpy/lib/function_base.py in cov(m, y, rowvar, bias, ddof, fweights, aweights)
   2429             w *= aweights
   2430 
-> 2431     avg, w_sum = average(X, axis=1, weights=w, returned=True)
   2432     w_sum = w_sum[0]
   2433 

<__array_function__ internals> in average(*args, **kwargs)

~/evalml/test_python/lib/python3.7/site-packages/numpy/lib/function_base.py in average(a, axis, weights, returned)
    426 
    427     if returned:
--> 428         if scl.shape != avg.shape:
    429             scl = np.broadcast_to(scl, avg.shape).copy()
    430         return avg, scl

AttributeError: 'float' object has no attribute 'shape'
bug

ال 10 كومينتر

مجرد التنقيب ولكن يبدو أن الخطأ يختفي إذا كانت y عبارة عن DataFrame بدلاً من ذلك ... ربما لا تتعامل الباندا مع بيانات السلسلة بشكل صحيح؟

يستدعي pandas وظيفة numpys

راجعت صفحة مشكلاتهم ولكن لم يظهر شيء بعد.

لقد أعدت للتو كلمة Master إلى ما قبل 1.0.0 (# 325). الآن يمكننا تصحيح هذه المشكلة وفقًا لسرعتنا الخاصة

بعد التصحيح قليلاً ، يجب أن تكون هذه هي المشكلة: https://github.com/pandas-dev/pandas/issues/31466.

هذا لأنه إذا كان y كائنًا pd.Series ، فإن الباندا ستعيد توجيه pd.corrwith(other) إلى pd.apply(lambda x: other.corr(x)) .

تؤدي إضافة هذا إلى pandas.core.nanops.py.get_corr_func._pearson إصلاح المشكلة:

def _pearson(a, b):
        b = b.astype(np.float32)
        return np.corrcoef(a, b)[0, 1]

أوه ، عمل مخبر عظيم jeremyliweishih !

إذن ، خياراتنا:

  1. لا تفعل شيئا. احتفظ بنسخة الباندا الخاصة بنا دون 1.0.0 وانتظر حتى يقوم الباندا بإصلاح ( jeremyliweishih ربما يمكنك الكتابة إليهم مع النتائج الخاصة بك؟)
  2. ابحث عن طريقة لتطبيق التصحيح الذي وجدته في التثبيتات الخاصة بنا

@ angela97lin ، لقد ذكرت أن تحويل شيء ما إلى إطار بيانات يبدو أنه يصلح الأمور ؛ هل هذا شيء يجب أن نضيفه إلى قائمة الخيارات هذه؟

يبدو أن الخيار 1 هو الفائز بالنسبة لي. أفكار؟

إذا رأينا دعم الإصدار الأحدث من pandas بمثابة فوز كبير ، أعتقد أن التصحيح (إما التحويل إلى dataframe أو التكرار وحساب الارتباط) سيكون رائعًا! يمكننا دائمًا وضع دائرة للخلف وإزالة التصحيح عند إصلاحه. إذا لم يكن الأمر كذلك ، فأنا أوافق على أنه يمكننا الانتظار.

أعتقد أنه يجب أن يكون هدفًا هو البقاء على اطلاع دائم مع الباندا. من يعرف ما إذا كانت هناك أخطاء أخرى لم نلاحظها في اختبارات الوحدة الخاصة بنا.

إذا كان هناك حل سهل يأتي بتكلفة الأداء ، فلنقم بذلك فقط ونترك ملاحظة تفيد بأنه يمكن تحسينه لاحقًا.

رائع ، يبدو جيدًا. يبدو أن jeremyliweishih لديه بالفعل

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات