خطوات إعادة إنتاج الخطأ:
مشكلة:
فشل اختبار وحدة 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'
مجرد التنقيب ولكن يبدو أن الخطأ يختفي إذا كانت 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 !
إذن ، خياراتنا:
@ angela97lin ، لقد ذكرت أن تحويل شيء ما إلى إطار بيانات يبدو أنه يصلح الأمور ؛ هل هذا شيء يجب أن نضيفه إلى قائمة الخيارات هذه؟
يبدو أن الخيار 1 هو الفائز بالنسبة لي. أفكار؟
إذا رأينا دعم الإصدار الأحدث من pandas
بمثابة فوز كبير ، أعتقد أن التصحيح (إما التحويل إلى dataframe أو التكرار وحساب الارتباط) سيكون رائعًا! يمكننا دائمًا وضع دائرة للخلف وإزالة التصحيح عند إصلاحه. إذا لم يكن الأمر كذلك ، فأنا أوافق على أنه يمكننا الانتظار.
أعتقد أنه يجب أن يكون هدفًا هو البقاء على اطلاع دائم مع الباندا. من يعرف ما إذا كانت هناك أخطاء أخرى لم نلاحظها في اختبارات الوحدة الخاصة بنا.
إذا كان هناك حل سهل يأتي بتكلفة الأداء ، فلنقم بذلك فقط ونترك ملاحظة تفيد بأنه يمكن تحسينه لاحقًا.
رائع ، يبدو جيدًا. يبدو أن jeremyliweishih لديه بالفعل