当有人试图学习Python的细节(强调科学计算 - 即:熊猫,numpy,scikit-learn)时,大多数大师似乎都在推荐和使用iPython笔记本.作为初学者/中级编码器,我最大的难点在于我需要从IDE中获取代码完成/智能感知功能来学习函数参数.我还没有简单地知道当前开发中可用的参数.
在iPython中,我注意到我可以按下Tab以显示选项的下拉菜单(见下面的pd.)但我不想每次都打.这对我的需求来说不是用户友好的.相反,当我按下dot时,我希望它只显示可用的类和方法.
其次,我注意到如果我说的话pd.read_csv(<TAB>,我会得到比实际参数更多的选项read_csv.
问题:按下点/句点后,iPython可以立即自动显示准确的代码完成选项吗?另外,有没有办法将其配置为仅在函数内显示可用的函数参数?
为了使这个问题超级具体,我不是要求使用任何其他IDE; 我只是非常具体地询问iPython,并想知道是否有办法设置某种配置,以便在按下"点"(没有时间延迟)时立即获得准确的"点"显示选项.
下面的例子显示Desktop哪个显然不是参数pd.read_csv().
使用确定最佳参数后pipeline和GridSearchCV,我怎么pickle/ joblib后来这个过程中重新使用?当它是单个分类器时,我看到如何做到这一点......
from sklearn.externals import joblib
joblib.dump(clf, 'filename.pkl')
Run Code Online (Sandbox Code Playgroud)
但是,如何pipeline在执行和完成后用最佳参数保存整体gridsearch?
我试过了:
joblib.dump(grid, 'output.pkl') - 但是转储了每次网格搜索尝试(许多文件)joblib.dump(pipeline, 'output.pkl') - 但我不认为它包含最好的参数X_train = df['Keyword']
y_train = df['Ad Group']
pipeline = Pipeline([
('tfidf', TfidfVectorizer()),
('sgd', SGDClassifier())
])
parameters = {'tfidf__ngram_range': [(1, 1), (1, 2)],
'tfidf__use_idf': (True, False),
'tfidf__max_df': [0.25, 0.5, 0.75, 1.0],
'tfidf__max_features': [10, 50, 100, 250, 500, 1000, None],
'tfidf__stop_words': ('english', None),
'tfidf__smooth_idf': (True, False),
'tfidf__norm': ('l1', 'l2', None),
}
grid = …Run Code Online (Sandbox Code Playgroud) 我正在使用 Django 2.2。来自 Django管理静态文件 文档:
如果您按上述说明使用 django.contrib.staticfiles,则当 DEBUG 设置为 True 时,runserver 将自动执行此操作。如果您在 INSTALLED_APPS 中没有 django.contrib.staticfiles,您仍然可以使用 django.views.static.serve() 视图手动提供静态文件。
这不适合生产使用!有关一些常见的部署策略,请参阅部署静态文件。
例如,如果您的 STATIC_URL 定义为 /static/,您可以通过将以下代码段添加到您的 urls.py 来实现:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)
笔记
此辅助函数仅在调试模式下工作,并且仅当给定前缀是本地前缀(例如 /static/)而不是 URL(例如 http://static.example.com/)时。
此外,此辅助函数仅服务于实际的 STATIC_ROOT 文件夹;它不会像 django.contrib.staticfiles 那样执行静态文件发现。
我的解释
在运行eb createcommand之前,如何告诉 Elastic Beanstalk 使用不同的docker-compose文件?
比如我的项目目录:
\nHelloWorldDocker\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80.elasticbeanstalk\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80config.yml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80app/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80proxy/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80docker-compose.prod.yml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80docker-compose.yml\nRun Code Online (Sandbox Code Playgroud)\ndocker-compose.yml是我用于本地开发的docker-compose.prod.yml是我想用于生产的eb create有没有办法在从 EB CLI运行命令之前定义此配置?
说明显而易见的是:我意识到我可以用于docker-compose.yml我的生产文件和docker-compose.dev.yml我的本地开发,但随后在docker-compose up本地运行命令变得更加乏味(即docker-compose -f docker-compose.dev.yml up --build...:)。此外,我主要感兴趣的是这是否可能,因为我正在学习 Elastic Beanstalk,以及如果我愿意的话我可以如何做到。
编辑/更新:2021 年 6 月 11 日
\n我试图用docker-compose.prod.yml这个重命名docker-compose.yml为.ebextensions/docker-settings.config:
container_commands:\n rename_docker_compose:\n command: mv docker-compose.prod.yml docker-compose.yml\nRun Code Online (Sandbox Code Playgroud)\n\n>eb 部署:
\n …
在Django管理员中,当Custom从下拉列表中选择选项时,我想显示内联start_date和end_date字段以允许用户指定特定的开始和结束日期而不是预定义的时间段.
经过一段时间的研究,建议包括:使用隐藏字段,在ModelAdmin中定义覆盖get_form,或使用自定义Javascript(我没有经验).
问题:当在Django Admin字段的下拉列表中选择特定值()时,如何显示(显示)内联start_date和end_date字段Custom?当Custom没有被选择,start_date并且end_date将从视图中隐藏.
下面是我在本地的确切示例代码的完整示例:
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
...
'dropdown.apps.DropdownConfig',
]
Run Code Online (Sandbox Code Playgroud)
apps.py
from django.apps import AppConfig
class DropdownConfig(AppConfig):
name = 'dropdown'
Run Code Online (Sandbox Code Playgroud)
models.py
from django.db import models
class DropdownModel(models.Model):
CHOICES = (
('Today', 'Today'),
('Yesterday', 'Yesterday'),
('Last 7 Days', 'Last 7 Days'),
('Last 14 Days', 'Last 14 Days'),
('Last 30 Days', 'Last 30 Days'),
('Last 60 Days', …Run Code Online (Sandbox Code Playgroud) 数据帧
df = pd.DataFrame({'A': [['gener'], ['gener'], ['system'], ['system'], ['gutter'], ['gutter'], ['gutter'], ['gutter'], ['gutter'], ['gutter'], ['aluminum'], ['aluminum'], ['aluminum'], ['aluminum'], ['aluminum'], ['aluminum'], ['aluminum'], ['aluminum'], ['aluminum'], ['aluminum', 'toledo']], 'B': [['gutter'], ['gutter'], ['gutter', 'system'], ['gutter', 'guard', 'system'], ['ohio', 'gutter'], ['gutter', 'toledo'], ['toledo', 'gutter'], ['gutter'], ['gutter'], ['gutter'], ['how', 'to', 'instal', 'aluminum', 'gutter'], ['aluminum', 'gutter'], ['aluminum', 'gutter', 'color'], ['aluminum', 'gutter'], ['aluminum', 'gutter', 'adrian', 'ohio'], ['aluminum', 'gutter', 'bowl', 'green', 'ohio'], ['aluminum', 'gutter', 'maume', 'ohio'], ['aluminum', 'gutter', 'perrysburg', 'ohio'], ['aluminum', 'gutter', 'tecumseh', 'ohio'], ['aluminum', 'gutter', 'toledo', 'ohio']]}, columns=['A', …Run Code Online (Sandbox Code Playgroud) 我在Windows 7上.我Python 2.7.8 (64 bit)安装了.今天,我更改了.py从IDLE 打开文件到Windows命令处理器的默认程序,并愚蠢地选中了"始终使用所选程序打开此类文件"的复选框.
我想要做的是将我的默认程序更改回IDLE.
当我尝试将其更改回IDLE时,我转到Control Panel\Programs\Default Programs\Set Associations并选择.py名称并单击"更改程序".我确实看到,python.exe但选择什么也没做.然后我用"浏览"按钮定位到C:\Python27\Lib\idlelib,但不知道我是否应该选择idle.py,idle.pyw,idle.bat或其他一些空闲程序,这将迫使默认程序被闲置!
选择其中之一后没有任何反应.
如何使IDLE成为打开.py文件的默认程序,现在取消Windows命令处理器的默认设置?
我想将数据帧数据传递到剪贴板,以便粘贴到Excel中.问题是,该字符'\xe9'导致编码问题,如下所示:
>>> df.to_clipboard()
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\pandas\util\clipboard.py", line 65, in winSetClipboard
hCd = ctypes.windll.kernel32.GlobalAlloc(GMEM_DDESHARE, len(bytes(text))+1)
TypeError: string argument without an encoding
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<pyshell#51>", line 1, in <module>
df.to_clipboard()
File "C:\Python34\lib\site-packages\pandas\core\generic.py", line 1028, in to_clipboard
clipboard.to_clipboard(self, excel=excel, sep=sep, **kwargs)
File "C:\Python34\lib\site-packages\pandas\io\clipboard.py", line 98, in to_clipboard
clipboard_set(objstr)
File "C:\Python34\lib\site-packages\pandas\util\clipboard.py", line 68, in winSetClipboard
hCd = ctypes.windll.kernel32.GlobalAlloc(GMEM_DDESHARE, len(bytes(text, 'ascii'))+1)
UnicodeEncodeError: 'ascii' codec can't encode …Run Code Online (Sandbox Code Playgroud) 如何仅使用熊猫数据框方法绘制条形图的条形图不同颜色plot?
如果我有这个 DataFrame:
df = pd.DataFrame({'count': {0: 3372, 1: 68855, 2: 17948, 3: 708, 4: 9117}}).reset_index()
index count
0 0 3372
1 1 68855
2 2 17948
3 3 708
4 4 9117
Run Code Online (Sandbox Code Playgroud)
df.plot()我需要设置什么参数,以便图中的每个条形:
我正在尝试什么:
df.plot(x='index', y='count', kind='bar', label='index', colormap='Paired', use_index=False)
Run Code Online (Sandbox Code Playgroud)
结果:
我已经知道的(是的,这是可行的,但同样,我的目的是弄清楚如何df.plot只用它来做到这一点。肯定有可能吗?):
def f(df):
groups = df.groupby('index')
for name,group in groups:
plt.bar(name, group['count'], label=name, align='center')
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
通常情况下,利益相关者不希望使用擅长预测的黑盒模型; 他们希望能够深入了解功能,以便更好地了解他们的业务,因此他们可以向其他人解释.
当我们检查xgboost或sklearn梯度增强模型的特征重要性时,我们可以确定特征重要性......但我们不明白为什么这些特征很重要,对吗?
有没有办法解释不仅哪些功能很重要,还有它们为什么重要?
我被告知要使用shap,但是运行甚至一些样板示例都会引发错误,所以我正在寻找替代方案(甚至只是一种程序性的方法来检查树木和收集的见解,除了plot_importance()绘图之外我可以带走).
在下面的示例中,如何解释WHY功能f19是最重要的(同时还意识到决策树是随机的,没有random_state或种子).
from xgboost import XGBClassifier, plot_importance
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt
X,y = make_classification(random_state=68)
xgb = XGBClassifier()
xgb.fit(X, y)
plot_importance(xgb)
plt.show()
Run Code Online (Sandbox Code Playgroud)
更新: 我正在寻找的是程序化程序证明,上述模型选择的特征对预测能力有正面或负面影响.我想看看代码(不是理论),你将如何检查实际模型并确定每个特征的正面或负面贡献.目前,我认为这是不可能的,所以有人请证明我错了.我爱是错的!
我也理解决策树是非参数的并且没有系数.仍然有一种方法可以看出一个特征是否有积极贡献(该特征的一个单位增加y)或负面(该特征的一个单位减少y).
Update2: 尽管对这个问题大加赞赏,还有几个"亲密"的投票,看来这个问题毕竟不是那么疯狂.部分依赖图可能是答案.
Friedman(2001)引入了部分依赖图(PDP),目的是解释复杂的机器学习算法.解释线性回归模型并不像解释支持向量机,随机森林或梯度增强机模型那么复杂,这是部分依赖图可以使用.对于一些统计解释,您可以在这里参考和更多进展.一些算法具有用于发现变量重要性的方法,但是它们不表示变量是否对模型产生正面或 负面影响.
python ×9
pandas ×3
django ×2
scikit-learn ×2
clipboard ×1
django-admin ×1
django-forms ×1
grid-search ×1
ipython ×1
matplotlib ×1
pipeline ×1
plot ×1
python-2.7 ×1
python-3.x ×1
python-idle ×1
unicode ×1
xgboost ×1