Ubuntu, MySQL i Jupyter

Instalacja Ubuntu

Pobierz obraz dysku systemu Ubuntu z oficjalnej strony: link do oficjalnej strony Ubuntu.
Zainstaluj program do przygotowania pendrive butującego. Może to byc np. Etcher.
Przygotuj pendriwe min 4 GB.
Przy pomocy programu nagraj na pendrive obraz systemu ubuntu.
W biosie ustaw uruchamianie systemu z pendrive.
Uruchom ponownie komputer i zainstaluj system.

Wyłączanie komputera

sudo shutdown -h now

Restart komputera

sudo reboot

Sprawdzenie własnego IP

ifconfig

Tworzenie nowego katalogu

mkdir naza_katalogu

Sprawdzenie co znajduje się w obecnym katalogu

ls

Wejście do podkatalogu

cd nazwa_katalogi

wyjście z katalogu

cd

Sprawdzenie ścieżki katalogu w którym się znajduję

pwd

Usunięcie katalogu

rm -rf dane

Pobieranie z Internetu

wget https://www.dropbox.com/sh/6bjh81prh4f4n8c/AABcn8e8fXdMN-WtIi9h-Ykea/job_ofer.csv?dl=0

Jak połączyć się z serwerem Ubuntu z innego komputera

Link do dobrego tutorialu.

Aby łączyć się z serwerem zdalnie z innego komputera z Windows, musi mieć na naszym serwerze zainstalowany OpenSSH. Jest on instalowany zazwyczaj domyślnie lub można go wybrać podczas instalacji.

Na komputerze z Windows instalujemy program WinSCP i Putty.

Zamknięcie systemu

sudo shutdown -h now

Sprawdzenie wersji Python

python3 --version

Wpisywanie poleceń Python bezpośrednio w terminalu i wyjście z tego trybu

$ python
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()

Uruchomienie programu napisanego w pythonie na innym komputerze

Przez WinSCP wrzucamy na serwer plik np. run.py
Aby go uruchomić musimy być w folderze w którym ten plik znajduje się na serwerze.
W terminalu wpisujemy komendę:

python3 run.py

Instalacja mysql-connector

Potrzebny jest w programach Pythonowych łączących się z MySql.

sudo apt-get install python-pip

W tym etapie trzeba zatwierdzić restart usług. Miałem problem ze zrobieniem tego przez Putty. Nie mogłem kliknąć Entera. Udało się to zrobić bezpośrednio na serwerze.
Następnie instalacja pakietu:

sudo apt-get install python3-mysql.connector

Instalacja innych pakietów Python

Najpierw uruchom Python:

python

Następnie sprawdź czy dany pakiet nie jest już zainstalowany:

import nazwa_pakietu

Jeżeli nie wyświetlą się żadne błędy to znaczy, że dany pakiet jest zainstalowany.
W przeciwnym razie zainstaluj pakiet (najpierw wyjdź z Pythona wpisując exit()):

pip install nazwa_pakietu

Jeżeli instalacja się nie powiedzie to poczytaj tutaj poczytaj tutaj.

Instalacja Serwera MySQL na Ubuntu

Bardzo dobry opis instalacji znajduje się pod linkiem linkiem
Film wiele wyjasniający znajdziesz pod tym linkiem: instalacja MySQL

Mój opis instalacji:
Na początku zaktualizuj system:

sudo apt update && upgrade

Polecenie instalacji MySQl Server:

sudo apt install mysql-server

Umożliwienie łączenia się z mysql z innych komputerów:

sudo ufw allow mysql

Port domyślny to 3306

Uruchomienie serwisów MySQL (nie wiem czy jest to konieczne)

systemctl start mysql

Aby upewnić się, że serwer bazy danych uruchomił się wpisz: (nie wiem czy jest to konieczne)

systemctl enable mysql

Następnie uruchamiamy mysql wpisując:

sudo mysql

… i naciskamy ENTER. Bo nie ma jeszcze hasła.

Teraz ustalamy hasło dla root mysql:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

W miejsce password wpisz własne hasło.

Teraz należy zatwierdzić tę zmianę wpisując:

FLUSH PRIVILEGES;

Teraz wyloguj się z MySQL

exit

Od teraz logujemy się do mysql następująco:

mysql -u root -p

Aby wyjść z konsoli MySQL należy wpisać:

exit

Podstawowe polecenia MySQL

show databases;
create database studenci;

Używaj konkretnej bazy danych

use nazwa_bazy;

Pokaż tablice

Show tables;

Tworzenie tablicy

create table nazwa_tablicy (id int() unsigned auto_increment primary key not null, age int(3) not null, name varchar(12) not null);

Dodanie rekordu do tablicy

insert into nazwa_tablicy(age, name) values(2, 'Dominik);

Wyświetlenie nagłówków i rodzaju przechowywanych danych

describe nazwa_tablicy;

Wyświetlenie zawartości tablicy

select * from nazwa_tablicy;

Usunięcie tablicy

drop table nazwa_tablicy;

Kopiowanie tabeli (struktury)

CREATE TABLE tabela_2 LIKE tabela_1;

Kopiowanie danych z tabeli tabela_1 do tabeli tabela_2

INSERT INTO tabela_2 SELECT * FROM tabela_1;

Zabicie procesu

Artykuł tłumaczący to zagadnienie

Jak sprawdzić jakie porty są otwarte na Ubuntu?

netstat -ntulp

Jak otworzyć port?

sudo iptables -I INPUT -s 0/0 -p tcp --dport 3050 -j ACCEPT
sudo iptables -I INPUT -s 0/0 -p udp --dport 3050 -j ACCEPT

Odczytanie treści pliku

cat run.py

Stworzenie pliku

cat > nazwaPliku.txt

Teraz możesz wprowadzić tekst do pliku. Nacickając ENTER możesz przejść do następnych linii. Aby zapisać zmiany naciśnij Ctrl + Z

Edytowanie pliku z poziomu konsoli Ubuntu

Do dedycji może posłużyć nam program vi.
Plik do edycji uruchamiamy tak:

vi run.py

Film tłumaczący zagadnienie

Wyjeście z pliku, gdy nie dokonaliśmy zmian

:q

Wyjście z pliku, z anulowaniem zmian

:qa!

Wyjście z pliku z zapisem zmian

:x

Jeżeli chcesz coś usunąć to naciśnij Delete
Jeżeli chcesz coś wpisać to naciśnij

i

następnie zakończ tryb INSERT naciskając Esc
Dodanie wiersza poniżej – naciśnij

o

Zdalny dostęp do bazy MySQL na VPS OVH

Długo szukałem pliku konfiguracyjnego na moim ubuntu zainstalowanym na VPS OVH. Okazało się, że poprawna ścieżka to: vi /etc/mysql/mysql.conf.d/mysqld.cnf
Tam ustaw: bind-address = 0.0.0.0

Teraz musisz stworzyć nowego użytkownika. To tego nowego użytkownika będziesz używać do łączenia się z bazą danych z zewnątrz.

mysql -u root -p
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Odbieranie i nadawanie uprawnień użytkownikowi

Czasami warto ograniczyć uprawnienia danemu użytkownikowi. Np. po to by udostępnić komuś możliwość pobierania danych ale tak aby nie mógł ich wykasować.
To zagadnienie jest dobrze wytłumaczonena tej stronie

Całkowite odinstalowanie MySQL

To zagadnienie jest dobrze wytłumaczone na stronie:
linuxhelp.com

Odczyt z pliku CSV

Przykład pliku CSV:

1/2/2014,5,8,red
1/3/2014,5,2,green
1/4/2014,9,1,blue

Jak odczytać wiersz z niego:

import csv

with open('example.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    for row in readCSV:
        print(row)
        print(row[0])
        print(row[0],row[1],row[2],)

Jupyter

Środowisko w którym robimy Machine Learning.

Aby uruchomić Jupyter wpisz w Anakonda Prompt:

jupyter notebook

SHIFT + ENTER uruchomienie kodu w komórce i przejcie do następnej linii
CTRL + ENTER uruchomienie bez przejścia do następnej linii

Numpy biblioteka, która przyspiesza obliczenia numeryczne(macierz)
Import:

import numpy as np

Podglądnięcie aktywnych zmiennych:

%who

Używanie tagów HTML

%%html

Nagłówek

 

Tworzenie losowej macierzy:

np.random.rand(4, 5)

Powstaną 4 wiersze i 5 kolumn.
Wartości od 0 do 1.

Jeżeli chcesz zamrozić losowanie, czyli by ponownym uruchomieniu nie losowały się nowe wartości to przed poprzednią linią dopisz:

np.random.seed(10)

Do wykresy potrzebujesz matplotlib

import matplotlib.pyplot as plt
%matplotlib inline #to pozwala na wyświetlenie wykresu
x = np.linspace(1, 10, 100)
# 1 wartość poczatkowa, 10 wartość końcowa, 100 punktórw jest między tymi punktami
y = np.sin(x)
y2 = np.cos(x)
# tworzenie funkcji z x i y'ków
plt.plot(x, y);
plt.plot(x, y2);

Zatrzymanie Jupyter notebook

Wejdź do konsoli i naciśnij CTRL + C

Stworzenie nowej komórki

Dodanie komórki poniżej ESC + B
Dodanie komórki powyżej ESC + A
Usuń komórkę ESC + X
Wyszukiwarka skrótów ESC + P

Szybkie zmienianie tekstu na tekst

ESC + P wpisujesz 1 i ENTER

Otwarcie jupitera bez uruchomienia przegladarki

jupyter notebook --no -browser

Instalacja fbprophet

conda install -c conda-forge fbprophet

Po wpisaniu komendy trzeba po pewnym czasie potwierdzić wpisując y.
Nastęnie sprawdzamy czy wszystko się dobrze zainstalowało.

jupyter console
import fbprophet

Jeżeli wyatąpi błąd to należy wpisać:

conda install -c plotly plotly==3.10.0 --yes

Jeśli wszystko dobrze poszło to sprawdzamy czy wszystko jest już ok:

jupyter console
następnie
import fbprophet
import pystan
fbprophet.__version__
pystan.__version__

Pandas

import pandas as pd

# import danych z csv
df = pd.read_csv('plik.csv', sep=';')

# sprawdzenie jakości danych z importu
df.head()
dane.info()
# wydruk pierwszysch trzech wartości z nagłówkami
df.head(3)
# teraz sprawdzamy czy nie ma jakiś brakujacych wartości w danych
df.isnull().sum()

# wczytanie danych z pliku Excel
df = pd.read_excel('plik.xlsx')

# strawdzenie statystyk na temat wartości kolumn
df.describe()

# wypisanie nagłówków kolumn
df.columns

# wypisanie zawartości wybranych kolumn
print(df[['Name', 'HP', 'Speed']])
# inna metoda
for index, row in df.iterrows():
    print(index, row['Name'])

# wypisanie zawartości konkretnych wierszy
print(df.iloc[5:8])

# wypisanie pojedyńczej wartości z wiersza 3 i kolumny 1
print(df.iloc[3, 1])

# wypisanie tylko tych wierszów, których HP = 100
df.loc[df['HP'] == 100]

Zapis danych do CSV

df.to_csv(r'Ścieżka gdzie chcesz zapisać plik CSV\File Name.csv')

Dodanie nowej kolumny do DataFrame w Pandas

Jest to wytłumaczone tutaj: geeksforgeeks.org

Git

Dobry tutorial znajduje się w linku


Pobranie ropozytorium git

git clone https://github.com/konraddylewski/test.git

Łączenie się z repozytorium github

git remote add origin https://github.com/konraddylewski/test.git
git push -u origin master

Sprawdzenie statusu plików

git status

Dodanie pliku do gita

git add plik.txt

Teraz olik wyświetla się na zielono. Możemy commitować

git commit -m "Komentarz"

Teraz możemy wysłać zmiany na serwer

git push -u origin master