Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
fastai
GitHub Repository: fastai/fastbook
Path: blob/master/utils.py
492 views
1
# Numpy and pandas by default assume a narrow screen - this fixes that
2
from fastai.vision.all import *
3
from nbdev.showdoc import *
4
from ipywidgets import widgets
5
from pandas.api.types import CategoricalDtype
6
7
import matplotlib as mpl
8
import json
9
10
# mpl.rcParams['figure.dpi']= 200
11
mpl.rcParams['savefig.dpi']= 200
12
mpl.rcParams['font.size']=12
13
14
set_seed(42)
15
torch.backends.cudnn.deterministic = True
16
torch.backends.cudnn.benchmark = False
17
pd.set_option('display.max_columns',999)
18
np.set_printoptions(linewidth=200)
19
torch.set_printoptions(linewidth=200)
20
21
import graphviz
22
def gv(s): return graphviz.Source('digraph G{ rankdir="LR"' + s + '; }')
23
24
def get_image_files_sorted(path, recurse=True, folders=None): return get_image_files(path, recurse, folders).sorted()
25
26
27
# +
28
# pip install azure-cognitiveservices-search-imagesearch
29
30
from azure.cognitiveservices.search.imagesearch import ImageSearchClient as api
31
from msrest.authentication import CognitiveServicesCredentials as auth
32
33
def search_images_bing(key, term, min_sz=128, max_images=150):
34
params = {'q':term, 'count':max_images, 'minHeight':min_sz, 'minWidth':min_sz, 'imageType':'photo'}
35
headers = {"Ocp-Apim-Subscription-Key":key}
36
search_url = "https://api.bing.microsoft.com/v7.0/images/search"
37
response = requests.get(search_url, headers=headers, params=params)
38
response.raise_for_status()
39
search_results = response.json()
40
return L(search_results['value'])
41
42
43
# -
44
45
def search_images_ddg(key,max_n=200):
46
"""Search for 'key' with DuckDuckGo and return a unique urls of 'max_n' images
47
(Adopted from https://github.com/deepanprabhu/duckduckgo-images-api)
48
"""
49
url = 'https://duckduckgo.com/'
50
params = {'q':key}
51
res = requests.post(url,data=params)
52
searchObj = re.search(r'vqd=([\d-]+)\&',res.text)
53
if not searchObj: print('Token Parsing Failed !'); return
54
requestUrl = url + 'i.js'
55
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0'}
56
params = (('l','us-en'),('o','json'),('q',key),('vqd',searchObj.group(1)),('f',',,,'),('p','1'),('v7exp','a'))
57
urls = []
58
while True:
59
try:
60
res = requests.get(requestUrl,headers=headers,params=params)
61
data = json.loads(res.text)
62
for obj in data['results']:
63
urls.append(obj['image'])
64
max_n = max_n - 1
65
if max_n < 1: return L(set(urls)) # dedupe
66
if 'next' not in data: return L(set(urls))
67
requestUrl = url + data['next']
68
except:
69
pass
70
71
72
def plot_function(f, tx=None, ty=None, title=None, min=-2, max=2, figsize=(6,4)):
73
x = torch.linspace(min,max)
74
fig,ax = plt.subplots(figsize=figsize)
75
ax.plot(x,f(x))
76
if tx is not None: ax.set_xlabel(tx)
77
if ty is not None: ax.set_ylabel(ty)
78
if title is not None: ax.set_title(title)
79
80
# +
81
from sklearn.tree import export_graphviz
82
83
def draw_tree(t, df, size=10, ratio=0.6, precision=0, **kwargs):
84
s=export_graphviz(t, out_file=None, feature_names=df.columns, filled=True, rounded=True,
85
special_characters=True, rotate=False, precision=precision, **kwargs)
86
return graphviz.Source(re.sub('Tree {', f'Tree {{ size={size}; ratio={ratio}', s))
87
88
89
# +
90
from scipy.cluster import hierarchy as hc
91
92
def cluster_columns(df, figsize=(10,6), font_size=12):
93
corr = np.round(scipy.stats.spearmanr(df).correlation, 4)
94
corr_condensed = hc.distance.squareform(1-corr)
95
z = hc.linkage(corr_condensed, method='average')
96
fig = plt.figure(figsize=figsize)
97
hc.dendrogram(z, labels=df.columns, orientation='left', leaf_font_size=font_size)
98
plt.show()
99
100