使用了一段时间后,我想了解 Colab 的真正工作原理,以及使用其中的机密数据是安全的。
一些背景。我了解此处描述的 Python、IPython 和 Jupyter Notebook 之间的差异。我总结一下,Python 是一种编程语言,可以像任何其他应用程序一样使用 sudo apt-get 安装。IPython 是 Python 的交互式命令行终端,可以与 Python 标准包管理器 pip 一起安装。它允许您安装和管理用 Python 编写的不属于Python 标准库的其他包。Jupyter Notebook 添加了一个 Web 界面,它可以使用多个内核或后端,IPython 其中之一。
科拉布呢?据我了解,在使用 Colab 时,我从 google 获得了一个预装了 Python 的虚拟机以及许多其他库(又称包),如 pandas 或 matplotlib。这些包都安装在基本的 python 安装中。
Colab VM 附带一些临时存储。这相当于AWS中的实例存储。因此,当虚拟机运行时被中断时,即我们的虚拟机被 Google 停止(或者你更愿意说……终止?)时,它就会丢失。我相信,如果我要在那里上传我的机密数据,它不会在我的私有子网中......
因此,安装我们的驱动器相当于在 AWS 中使用 EBS 卷。EBS 卷是网络连接驱动器,因此即使 VM 运行时中断,其中的数据也将持续存在。不过,EBS 卷只能附加到一个 EC2 实例...但我可以将我的 Drive 安装到多个 Colab 会话。我不太清楚这些会话是什么...一些用户希望在 Colab 中创建虚拟环境,看起来安装驱动器是解决它的一种方法。
将 Drive 安装到 Colab 时,我们需要进行身份验证,因为我们要向 Colab 虚拟机的 …
python unix amazon-web-services jupyter-notebook google-colaboratory
Folium 允许使用工具提示或弹出文本创建标记。我想对我的 GeoJSON 多边形做同样的事情。
我的 GeoJSON 有一个名为"name"
(feature.properties.name
-> 假设它是美国每个州的名称)的属性。除了每个州的失业率之外,我希望能够将其显示为我的分区统计图中的标签。"State"
我在的专栏中也有相同的信息pandas dataframe
。
这可能吗?我很高兴有一个解决方案,允许它成为一个弹出窗口、工具提示或写在上面的简单文本标签。
import pandas as pd
url = (
"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
)
state_geo = f"{url}/us-states.json"
state_unemployment = f"{url}/US_Unemployment_Oct2012.csv"
state_data = pd.read_csv(state_unemployment)
m = folium.Map(location=[48, -102], zoom_start=3)
folium.Choropleth(
geo_data=state_geo,
name="choropleth",
data=state_data,
columns=["State", "Unemployment"],
key_on="feature.id",
fill_color="YlGn",
fill_opacity=0.7,
line_opacity=0.2,
legend_name="Unemployment Rate (%)",
).add_to(m)
folium.LayerControl().add_to(m)
m
Run Code Online (Sandbox Code Playgroud) 按照gensim word2vec 嵌入教程,我训练了一个简单的 word2vec 模型:
from gensim.test.utils import common_texts
from gensim.models import Word2Vec
model = Word2Vec(sentences=common_texts, size=100, window=5, min_count=1, workers=4)
model.save("/content/word2vec.model")
Run Code Online (Sandbox Code Playgroud)
我想使用 TensorBoard 中的嵌入投影仪将其可视化。gensim 文档中有另一个简单的教程。我在 Colab 中做了以下操作:
!python3 -m gensim.scripts.word2vec2tensor -i /content/word2vec.model -o /content/my_model
Traceback (most recent call last):
File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.7/dist-packages/gensim/scripts/word2vec2tensor.py", line 94, in <module>
word2vec2tensor(args.input, args.output, args.binary)
File "/usr/local/lib/python3.7/dist-packages/gensim/scripts/word2vec2tensor.py", line 68, in word2vec2tensor
model = gensim.models.KeyedVectors.load_word2vec_format(word2vec_model_path, binary=binary) …
Run Code Online (Sandbox Code Playgroud) 下面是 matplolib 动画图的代码,这里是如何保存它。
from IPython.display import HTML
import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np
t = np.linspace(0,2*np.pi)
x = np.sin(t)
fig, ax = plt.subplots()
ax.axis([0,2*np.pi,-1,1])
l, = ax.plot([],[])
def animate(i):
l.set_data(t[:i], x[:i]);
ani = matplotlib.animation.FuncAnimation(fig, animate, frames=len(t));
#HTML(ani.to_jshtml())
ani.to_html5_video()
Run Code Online (Sandbox Code Playgroud)
我基本上做的是将生成的代码复制到一个基本的 html 脚本中,如下所示:
<html>
<head>
<title>Page Title</title>
</head>
<body>
<h1>My First Heading</h1>
<video width="432" height="288" controls autoplay loop> BLABLA </video>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
图表未显示,但标题和视频菜单在那里。为什么?我该如何解决?
我最近发现了这个令人惊叹的 ML 可解释性库。我决定使用 sklearn 的玩具数据集构建一个简单的 xgboost 分类器,并绘制一个force_plot
.
为了理解这个情节,图书馆说:
上面的解释显示了每个有助于将模型输出从基值(我们传递的训练数据集上的平均模型输出)推送到模型输出的功能。将预测推高的特征以红色显示,将预测推低的特征以蓝色显示(这些力图在我们的 Nature BME 论文中介绍)。
所以在我看来,base_value 应该与clf.predict(X_train).mean()
0.637 相同。然而,从绘图来看,情况并非如此,数字实际上不在 [0,1] 之内。我尝试以不同的基础(10,e,2)进行记录,假设这将是某种单调变换......但仍然不走运。我怎样才能得到这个base_value?
!pip install shap
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
import pandas as pd
import shap
X, y = load_breast_cancer(return_X_y=True)
X = pd.DataFrame(data=X)
y = pd.DataFrame(data=y)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
clf = GradientBoostingClassifier(random_state=0)
clf.fit(X_train, y_train)
print(clf.predict(X_train).mean())
# load JS visualization code to notebook
shap.initjs()
explainer …
Run Code Online (Sandbox Code Playgroud) 感谢这个精彩的教程,我刚刚学会了将我自己的 python 包上传到 PyPI 。我现在试图更好地理解如何wheels
工作,我发现了这篇文章很有帮助。
但是,我仍然不明白为什么python setup.py bdist_wheel
要创建一个几乎空的目录,并build
以两个子文件夹命名:(bdist.win-amd64
空)和lib
(其中包含我的包的副本),以及开发人员稍后将通过执行 .txt 文件上传到 PyPI 的目录中的.whl
文件。dist
python -m twine upload dist/*
为什么build
需要这个目录?我的意思是,dist
目录还不够吗?而且,如果代码没有实际编译,为什么.whl
称为二进制发行版。
我正在研究一个 Linkedin 网络抓取项目。我正在尝试获取某人感兴趣的公司列表(注意我没有使用 API)。这是一个动态网站,所以我需要在抓取公司名称的同时向下滚动。我知道如何在主窗口中执行此操作,但由于兴趣是一个弹出窗口,因此滚动解决方案不起作用。到目前为止我的代码是:
from selenium.webdriver.common.keys import Keys
bar = driver.find_element_by_xpath('//ul[@class="entity-list row"]')
bar.send_keys(Keys.END)
Run Code Online (Sandbox Code Playgroud)
由于它不起作用,我也尝试过:
bar = driver.find_element_by_xpath('//ul[@class="entity-list row"]')
driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', bar)
Run Code Online (Sandbox Code Playgroud)
问题是我不是在弹出窗口上操作,而是在主窗口上操作,所以它没有达到预期的效果。
我将我的公共 github 存储库克隆到我的驱动器中。我可以将 colab 与笔记本一起使用。我也可以拉。然而,尽管已正确配置,但在尝试推送时仍面临以下错误:
!git config --global user.email "my_email"
!git config --global user.name "my_user"
Run Code Online (Sandbox Code Playgroud)
这样做时,!git push origin master
我收到以下错误:
fatal: could not read Username for 'https://github.com': No such device or address
Run Code Online (Sandbox Code Playgroud)
以前有人遇到过这个问题吗?
我使用 shap 库来实现 ML 可解释性,以更好地理解 k 均值分割算法集群。简而言之,我制作了一些博客,使用 k-means 对它们进行聚类,然后将聚类作为标签,并使用 xgboost 来尝试预测它们。我有 5 个簇,所以这是一个单标签多类分类问题。
import numpy as np
from sklearn.datasets import make_blobs
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
import xgboost as xgb
import shap
X, y = make_blobs(n_samples=500, centers=5, n_features=5, random_state=0)
data = pd.DataFrame(np.concatenate((X, y.reshape(500,1)), axis=1), columns=['var_1', 'var_2', 'var_3', 'var_4', 'var_5', 'cluster_id'])
data['cluster_id'] = data['cluster_id'].astype(int).astype(str)
scaler = StandardScaler()
scaled_features = scaler.fit_transform(data.iloc[:,:-1])
kmeans = KMeans(n_clusters=5, **kmeans_kwargs)
kmeans.fit(scaled_features)
data['predicted_cluster_id'] = kmeans.labels_.astype(int).astype(str)
clf = xgb.XGBClassifier()
clf.fit(scaled_data.iloc[:,:-1], scaled_data['predicted_cluster_id'])
shap.initjs() …
Run Code Online (Sandbox Code Playgroud) 我想向检索器传递一个相似度阈值。到目前为止我只能弄清楚如何传递 ak 值,但这不是我想要的。我怎样才能通过门槛呢?
from langchain.document_loaders import PyPDFLoader
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
def get_conversation_chain(vectorstore):
llm = ChatOpenAI(temperature=0, model_name='gpt-3.5-turbo')
qa = ConversationalRetrievalChain.from_llm(llm=llm, retriever=vectorstore.as_retriever(search_kwargs={'k': 2}), return_source_documents=True, verbose=True)
return qa
loader = PyPDFLoader("sample.pdf")
# get pdf raw text
pages = loader.load_and_split()
faiss_index = FAISS.from_documents(list_of_documents, OpenAIEmbeddings())
# create conversation chain
chat_history = []
qa = get_conversation_chain(faiss_index)
query = "What is a sunflower?"
result = qa({"question": query, "chat_history": chat_history})
Run Code Online (Sandbox Code Playgroud) python ×8
scikit-learn ×2
shap ×2
choropleth ×1
distutils ×1
folium ×1
gensim ×1
git ×1
github ×1
html ×1
javascript ×1
langchain ×1
leaflet ×1
linkedin ×1
matplotlib ×1
nlp ×1
openai-api ×1
python-3.x ×1
python-wheel ×1
selenium ×1
setuptools ×1
tensorboard ×1
tensorflow ×1
unix ×1
web-scraping ×1
word2vec ×1
xgboost ×1