Mac下安装oh-my-zsh

原文链接
https://jinkey.ai/post/tech/xiang-mian-fei-yong-gu-ge-zi-yuan-xun-lian-shen-jing-wang-luo-colab-xiang-xi-shi-yong-jiao-cheng
正文作者 Jinkey(微信公众号 jinkey-love,官网
https://jinkey.ai)
章允许非篡改署名转载,删除或修改本段版权信息转载的,视为侵犯知识产权,我们保留追求你法律责任的权,特此声明!

  Mac下由带的终极并无好用,当您打开终端的时光是一个洁白的窗口,其实Mac自带几栽shell,默认使用的凡bash,可以由此

1 简介

Colab 是谷歌内部类 Jupyter Notebook 的交互式 Python 环境,免安装便捷切换
Python 2和 Python 3
的条件,支持Google全家桶(TensorFlow、BigQuery、GoogleDrive等),支持 pip
安装任意从定义库。
网址:
https://colab.research.google.com

 

2 库的装置及动

Colab 自带了 Tensorflow、Matplotlib、Numpy、Pandas
等深度上基础库。如果还索要另外因,如 Keras,可以新建代码块,输入

# 安装最新版本Keras
# https://keras.io/
!pip install keras
# 指定版本安装
!pip install keras==2.0.9
# 安装 OpenCV
# https://opencv.org/
!apt-get -qq install -y libsm6 libxext6 && pip install -q -U opencv-python
# 安装 Pytorch
# http://pytorch.org/
!pip install -q http://download.pytorch.org/whl/cu75/torch-0.2.0.post3-cp27-cp27mu-manylinux1_x86_64.whl torchvision
# 安装 XGBoost
# https://github.com/dmlc/xgboost
!pip install -q xgboost
# 安装 7Zip
!apt-get -qq install -y libarchive-dev && pip install -q -U libarchive
# 安装 GraphViz 和 PyDot
!apt-get -qq install -y graphviz && pip install -q pydot
cat /etc/shells 

3 Google Drive 文件操作

 

授权登录

于与一个 notebook,登录操作才待展开相同差,然后才堪快读写操作。

# 安装 PyDrive 操作库,该操作每个 notebook 只需要执行一次
!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# 授权登录,仅第一次的时候会鉴权
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

尽这段代码后,会打印以下内容,点击连接进行授权登录,获取到 token
值填写到输入框,按 Enter 继续即可成功报到。

查阅几种植shell

遍历目录

# 列出根目录的所有文件
# "q" 查询条件教程详见:https://developers.google.com/drive/v2/web/search-parameters
file_list = drive.ListFile({'q': "'root' in parents and trashed=false"}).GetList()
for file1 in file_list:
  print('title: %s, id: %s, mimeType: %s' % (file1['title'], file1['id'], file1["mimeType"]))

可观看控制台打印结果

title: Colab 测试, id: 1cB5CHKSdL26AMXQ5xrqk2kaBv5LSkIsJ8HuEDyZpeqQ,
mimeType: application/vnd.google-apps.document

title: Colab Notebooks, id: 1U9363A12345TP2nSeh2K8FzDKSsKj5Jj,
mimeType: application/vnd.google-apps.folder

内部 id 是属下的课获取文件的唯一标识。根据 mimeType 可以知晓
Colab 测试 文件为 doc 文档,而 Colab Notebooks 为文件夹(也就是是 Colab
的 Notebook 储存的根目录),如果想查询 Colab Notebooks
文件夹下之文书,查询条件可这样写:

# '目录 id' in parents
file_list = drive.ListFile({'q': "'1cB5CHKSdL26AMXQ5xrqk2kaBv5LBkIsJ8HuEDyZpeqQ' in parents and trashed=false"}).GetList()
bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

读取文件内容

时测试了得直接读取内容之格式为 .txt(mimeType:
text/plain),读取代码:

file = drive.CreateFile({'id': "替换成你的 .txt 文件 id"}) 
file.GetContentString()

.csv 如果用GetContentString()唯其如此打印第一实行的数额,要用“

file = drive.CreateFile({'id': "替换成你的 .csv 文件 id"}) 
#这里的下载操作只是缓存,不会在你的Google Drive 目录下多下载一个文件
file.GetContentFile('iris.csv', "text/csv") 

# 直接打印文件内容
with open('iris.csv') as f:
  print f.readlines()
# 用 pandas 读取
import pandas
pd.read_csv('iris.csv', index_col=[0,1], skipinitialspace=True)

Colab 会直接坐表的款式出口结果(下图为截取 iris 数据集的前几实践),
iris 数据集地址也
http://aima.cs.berkeley.edu/data/iris.csv
,学习之校友可以推行上传到祥和的 Google Drive。

中间最为强劲的本是zsh,相比起bash来,zsh可以自动补全命令行,可以变又主题,可以来得Git仓库的状态等等,非常有力。但是头为zsh配置复杂,导致用之口非多,直到github上
oh-my-zsh 开源项目的产出,才给zsh的布局变简单。

形容文件操作

# 创建一个文本文件
uploaded = drive.CreateFile({'title': '示例.txt'})
uploaded.SetContentString('测试内容')
uploaded.Upload()
print('创建后文件 id 为 {}'.format(uploaded.get('id')))

重新多操作而查阅
http://pythonhosted.org/PyDrive/filemanagement.html

下面进行 oh-my-zsh
的设置:

4 Google Sheet 电子表格操作

1.率先安装 Git ,只需要以
App Store 下安装 xcode ,安装完成后打开令该初始化,现在之 xcode 版本自带
Git ,无需另外安装。

授权登录

于跟一个 notebook,登录操作才待展开相同坏,然后才堪快读写操作。

!pip install --upgrade -q gspread
from google.colab import auth
auth.authenticate_user()

import gspread
from oauth2client.client import GoogleCredentials

gc = gspread.authorize(GoogleCredentials.get_application_default())

2.安装 oh-my-zsh
前,我们让mac的顶逼格高一点,打开终端偏好设置,选中 Homebrew
主题,终端窗口就成为程序员喜欢的伪的绿字主题,看正在护眼。

读取

将 iris.csv 的多少导入创建一个 Google Sheet 文件来举行示范,可以置身
Google Drive 的随意目录

worksheet = gc.open('iris').sheet1

# 获取一个列表[
# [第1行第1列, 第1行第2列, ... , 第1行第n列], ... ,[第n行第1列, 第n行第2列, ... , 第n行第n列]]
rows = worksheet.get_all_values()
print(rows)

#  用 pandas 读取
import pandas as pd
pd.DataFrame.from_records(rows)

打印结果个别吗

[[‘5.1’, ‘3.5’, ‘1.4’, ‘0.2’, ‘setosa’], [‘4.9’, ‘3’, ‘1.4’,
‘0.2’, ‘setosa’], …

葡京赌场网址 1

写入

sh = gc.create('谷歌表')

# 打开工作簿和工作表
worksheet = gc.open('谷歌表').sheet1
cell_list = worksheet.range('A1:C2')

import random
for cell in cell_list:
  cell.value = random.randint(1, 10)
worksheet.update_cells(cell_list)

3.安装 oh-my-zsh
,oh-my-zsh提供了点儿种为主安装方式,一是使用 curl 安装:

5 下充斥文件及地头

with open('example.txt', 'w') as f:
  f.write('测试内容')
files.download('example.txt')

 

6 实战

此地因为自当 Github 的开源LSTM
文本分类型也例子https://github.com/Jinkeycode/keras\_lstm\_chinese\_document\_classification
master/data 目录下的老三只公文存放到 Google Drive
上。该示例演示的是对准健康、科技、设计三单门类的题进行分类。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

新建

当 Colab 上新建 Python2 的记录本

 

装依赖

!pip install keras
!pip install jieba
!pip install h5py

import h5py
import jieba as jb
import numpy as np
import keras as krs
import tensorflow as tf
from sklearn.preprocessing import LabelEncoder

老二是使用wget:

加载数据

授权登录

# 安装 PyDrive 操作库,该操作每个 notebook 只需要执行一次
!pip install -U -q PyDrive
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

def login_google_drive():
  # 授权登录,仅第一次的时候会鉴权
  auth.authenticate_user()
  gauth = GoogleAuth()
  gauth.credentials = GoogleCredentials.get_application_default()
  drive = GoogleDrive(gauth)
  return drive

列有 GD 下的保有文件

def list_file(drive):
  file_list = drive.ListFile({'q': "'root' in parents and trashed=false"}).GetList()
  for file1 in file_list:
    print('title: %s, id: %s, mimeType: %s' % (file1['title'], file1['id'], file1["mimeType"]))


drive = login_google_drive()
list_file(drive)

缓存数据到办事条件

def cache_data():
  # id 替换成上一步读取到的对应文件 id
  health_txt = drive.CreateFile({'id': "117GkBtuuBP3wVjES0X0L4wVF5rp5Cewi"}) 
  tech_txt = drive.CreateFile({'id': "14sDl4520Tpo1MLPydjNBoq-QjqOKk9t6"})
  design_txt = drive.CreateFile({'id': "1J4lndcsjUb8_VfqPcfsDeOoB21bOLea3"})
  #这里的下载操作只是缓存,不会在你的Google Drive 目录下多下载一个文件

  health_txt.GetContentFile('health.txt', "text/plain")
  tech_txt.GetContentFile('tech.txt', "text/plain")
  design_txt.GetContentFile('design.txt', "text/plain")

  print("缓存成功")

cache_data()

读取工作葡京赌场网址环境的数额

def load_data():
    titles = []
    print("正在加载健康类别的数据...")
    with open("health.txt", "r") as f:
        for line in f.readlines():
            titles.append(line.strip())

    print("正在加载科技类别的数据...")
    with open("tech.txt", "r") as f:
        for line in f.readlines():
            titles.append(line.strip())


    print("正在加载设计类别的数据...")
    with open("design.txt", "r") as f:
        for line in f.readlines():
            titles.append(line.strip())

    print("一共加载了 %s 个标题" % len(titles))

    return titles

titles = load_data()

加载标签

def load_label():
    arr0 = np.zeros(shape=[12000, ])
    arr1 = np.ones(shape=[12000, ])
    arr2 = np.array([2]).repeat(7318)
    target = np.hstack([arr0, arr1, arr2])
    print("一共加载了 %s 个标签" % target.shape)

    encoder = LabelEncoder()
    encoder.fit(target)
    encoded_target = encoder.transform(target)
    dummy_target = krs.utils.np_utils.to_categorical(encoded_target)

    return dummy_target

target = load_label()

 

文本预处理

max_sequence_length = 30
embedding_size = 50

# 标题分词
titles = [".".join(jb.cut(t, cut_all=True)) for t in titles]

# �word2vec 词袋化
vocab_processor = tf.contrib.learn.preprocessing.VocabularyProcessor(max_sequence_length, min_frequency=1)
text_processed = np.array(list(vocab_processor.fit_transform(titles)))

# 读取词标签
dict = vocab_processor.vocabulary_._mapping
sorted_vocab = sorted(dict.items(), key = lambda x : x[1])
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

构建神经网络

这里用 Embedding 和 lstm 作为前片重合,通过 softmax 激活输出结果

# 配置网络结构
def build_netword(num_vocabs):
    # 配置网络结构
    model = krs.Sequential()
    model.add(krs.layers.Embedding(num_vocabs, embedding_size, input_length=max_sequence_length))
    model.add(krs.layers.LSTM(32, dropout=0.2, recurrent_dropout=0.2))
    model.add(krs.layers.Dense(3))
    model.add(krs.layers.Activation("softmax"))
    model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])

    return model

num_vocabs = len(dict.items())
model = build_netword(num_vocabs=num_vocabs)

import time
start = time.time()
# 训练模型
model.fit(text_processed, target, batch_size=512, epochs=10, )
finish = time.time()
print("训练耗时:%f 秒" %(finish-start))

 

预计样本

sen
可以变换成你协调的词,预测结果也[健康类文章概率, 科技类文章概率, 设计类文章概率],
概率最高的也罢那无异看似的篇章,但最充分概率低于 0.8 时判定为无法归类的文章。

sen = "做好商业设计需要学习的小技巧"
sen_prosessed = " ".join(jb.cut(sen, cut_all=True))
sen_prosessed = vocab_processor.transform([sen_prosessed])
sen_prosessed = np.array(list(sen_prosessed))
result = model.predict(sen_prosessed)

catalogue = list(result[0]).index(max(result[0]))
threshold=0.8
if max(result[0]) > threshold:
    if catalogue == 0:
        print("这是一篇关于健康的文章")
    elif catalogue == 1:
        print("这是一篇关于科技的文章")
    elif catalogue == 2:
        print("这是一篇关于设计的文章")
    else:
        print("这篇文章没有可信分类")

管上述代码复制粘贴到你的巅峰上按回车执行即可。

倘您的Mac上没有安装了
wget ,建议利用第一种方式。

下是github上oh-my-zsh的网址,在安装前,你吧足以参考下官网,了解又多oh-my-zsh的技巧。

https://github.com/robbyrussell/oh-my-zsh