<jupyter_start><jupyter_text>Praca domowa 7 - Bonus <NAME>  Dane W pliku 'signal.tcv' znajdują się 4 sygnały, które zostały zaburzone poprzez kombinację liniową ze sobą nawzajem.<jupyter_code>import pandas as pd
import seaborn as sb
signals = pd.read_csv('..\\..\\signals.tsv', sep="\t")
signals.head()
time=signals['time']
signals=signals.drop('time', 1)
sb.heatmap(signals.corr(), annot=True)<jupyter_output><empty_output><jupyter_text>Kolumna signal4 jest znacznie skorelowana z kolumną signal1 i signal2.<jupyter_code>import matplotlib.pyplot as plt

f, axs = plt.subplots(2, 2, figsize=(20,10))

axs[0,0].plot(time, signals[signals.columns[0]])
axs[0,0].set_title('Signal1')
axs[0,1].plot(time, signals[signals.columns[1]])
axs[0,1].set_title('Signal2')
axs[1,0].plot(time, signals[signals.columns[2]])
axs[1,0].set_title('Signal3')
axs[1,1].plot(time, signals[signals.columns[3]])
axs[1,1].set_title('Signal4')

plt.show()<jupyter_output><empty_output><jupyter_text>Powyżej zauważona zależność jest widoczna na wykresie - zmienna signal4 odbiera kształtem od pozostałych, jest o wiele mniej regularna.  FastICARozdzielimy sygnały tak, aby uzyskać oryginalne obserwacje za pomocą Independent Component Analysis.<jupyter_code>from sklearn.decomposition import FastICA
ica = FastICA(n_components=4, random_state=0)
signals_ica = ica.fit_transform(signals)
original_signals=pd.DataFrame(signals_ica)
original_signals.head()
original_signals.columns = ['orig_sig1', 'orig_sig2', 'orig_sig3', 'orig_sig4']
sb.heatmap(original_signals.corr(), annot=True)<jupyter_output><empty_output><jupyter_text>Po wykonaniu algorytmu FastICA zmienne przestają być skorelowane.<jupyter_code>import matplotlib.pyplot as plt

f, axs = plt.subplots(2, 2, figsize=(20,10))
plt.title('Signals')

orig_cols=original_signals.columns
axs[0,0].plot(time, original_signals[orig_cols[0]])
axs[0,0].set_title('Original Signal1')
axs[0,1].plot(time, original_signals[orig_cols[1]])
axs[0,1].set_title('Original Signal2')
axs[1,0].plot(time, original_signals[orig_cols[2]])
axs[1,0].set_title('Original Signal3')
axs[1,1].plot(time, original_signals[orig_cols[3]])
axs[1,1].set_title('Original Signal4')


plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.14704555705908887, 'fraction_numerical': 0.032927379341452415, 'mean_word_length': 8.946188340807176, 'pattern_counts': {'":': 0, '<': 18, '<?xml version=': 0, '>': 18, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '362137', 'license': 'Apache-2.0', 'n_tokens_mistral': 932, 'n_tokens_neox': 920, 'n_words': 148, 'path': 'Prace_domowe/Praca_domowa7/Grupa3/MajchrzakMartyna/Bonus.ipynb', 'repo_name': 'welkierk/2020L-WUM', 'size': '2228'}