我正在尝试执行Udacity mini项目,并且已经安装了最新版本的SKLearn库(20.2)。
当我跑步时:
from sklearn.decomposition import RandomizedPCA
Run Code Online (Sandbox Code Playgroud)
我得到错误:
ImportError: cannot import name 'RandomizedPCA' from 'sklearn.decomposition' (/Users/kintesh/Documents/udacity_ml/python3/venv/lib/python3.7/site-packages/sklearn/decomposition/__init__.py)
我实际上甚至使用以下方式升级了版本:
pip3 install -U scikit-learn
哪个已从升级0.20.0到0.20.2,也已卸载并重新安装...所以我不确定为什么它无法初始化sklearn.decomposition。
这里有什么解决方案可能不会导致从我的机器上完全卸载python3吗?希望避免这种情况。
任何帮助将不胜感激!
编辑:
我正在做一些挖掘并尝试修复此问题,似乎好像SKLearn GitHub上库中的__init__.py文件decomposition未引用RandomizedPCA...是否已将其删除?
我通常只是将其发布到 Stack Overflow,但我考虑了一下并意识到这实际上不是一个编码问题 - 这是一个 ML 问题。
对代码或其他任何内容的任何其他反馈都非常感谢和欢迎!
所以我正在 Kaggle 上做这个巨大的问题。我准备好了四个数据集:
考虑到这一点,我有两个问题,尽管第二个是重要的。
问题1:我对下一步的理解是否正确?
我们在训练数据上拟合我们的模型,然后我们创建一个预测 ( pred ),它试图根据我们的features_test数据进行预测。这意味着我们的pred和target_test数据集理论上应该是相同的(如果模型运行良好)。
这意味着为了证明模型的准确性,我们可以简单地比较pred和target_test之间的结果,这正是Sklearn 中的accuracy_score函数所做的。
问题2:使用模型的score方法和accuracy_score函数有什么区别?
这就是让我困惑的地方。您可以在单元格 97 中看到我使用的“模型 1”标题下的第一个单元格:
clf.score(features_test, target_test)
Run Code Online (Sandbox Code Playgroud)
这是结果
0.8609865470852018
但是,后来,我也使用:
from sklearn.metrics import accuracy_score
print(accuracy_score(target_test, pred))
Run Code Online (Sandbox Code Playgroud)
这也导致
0.8609865470852018
这两个分数怎么一样?我做错了什么吗?或者这两个步骤基本上都在做同样的事情?如何..?该score()属性是否有效地创建了一个predDataframe 并在后台进行检查?
我有一个名为的数据框df_base,看起来像这样。正如您所看到的,有一个名为Sexthat's maleor的列female。我想将这些值分别映射为 0 和 1。
+---+-------------+----------+--------+---------------------------------------------------+--------+-----+-------+-------+------------------+---------+-------+----------+
| | PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
+---+-------------+----------+--------+---------------------------------------------------+--------+-----+-------+-------+------------------+---------+-------+----------+
| 0 | 1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22 | 1 | 0 | A/5 21171 | 7.25 | NaN | S |
| 1 | 2 | 1 | 1 | …Run Code Online (Sandbox Code Playgroud) 我的数据pw2框看起来像这样,其中有两列pw1和pw2,这是获胜的概率。我想执行一些条件逻辑,以创建另一个WINNER基于based pw1and的列pw2。
+-------------------------+-------------+-----------+-------------+
| Name1 | pw1 | Name2 | pw2 |
+-------------------------+-------------+-----------+-------------+
| Seaking | 0.517184213 | Lickitung | 0.189236181 |
| Ferrothorn | 0.172510623 | Quagsire | 0.260884258 |
| Thundurus Therian Forme | 0.772536272 | Hitmonlee | 0.694069408 |
| Flaaffy | 0.28681284 | NaN | NaN |
+-------------------------+-------------+-----------+-------------+
Run Code Online (Sandbox Code Playgroud)
我想有条件地在函数中执行此操作,但是遇到了一些麻烦。
pw1> pw2,则填充Name1pw2> pw1,则填充Name2pw1已填充但未pw2填充,则填充Name1pw2 …python ×3
pandas ×2
scikit-learn ×2
dataframe ×1
if-statement ×1
install ×1
mapping ×1
pip ×1
python-3.x ×1