Sunday, December 5, 2021

Решение задачи 17 371 Вариант Ларина с помощью Python (numpy,matplotlib)

 Текст задачи





==============

Python code

==============

import matplotlib.pyplot as plt

import numpy as np

delta = 0.025

x = np.arange(-10, 10, delta)

y = np.arange(-10, 10, delta)

p, q = np.meshgrid(x, y)

plt.axhline(y = 5, color = 'red', linestyle = '-')

plt.axhline(y = 4, color = 'green', linestyle = '-')

plt.axhline(y = 1, color = 'green', linestyle = '-')

plt.axhline(y = 0, color = 'red', linestyle = '-')

plt.axvline(0, -10, 10, label='y axis')

# define some function f(x,y)

f = lambda x, y: x**4 - 2*x**3 - 4*x**2 + 10*x \

        - 5 - 2*x*y + 6*y - y**2

z=f(p,q)

# plot contour line of f(x,y)==0

plt.contour(p, q, z , [0], colors=["b"])

# make legend

proxy, = plt.plot([], color="b")

plt.legend(handles=[proxy], labels=["f(x,y) = 0"])

plt.show()




























Из плота нетрудно видеть при каких а горизонтальные линии имеют не более 3-ех точек пересения с графиком.

Ответ : а ∈ (-infinity ; 0] ∪ {1;4}∪[5 ; +infinity)





Thursday, December 2, 2021

Метрики для оценки алгоритмов машинного обучения в Python

 (.env) [boris@fedora34server YANDEXQ]$ cat predict.py

import pandas

from sklearn import model_selection

from sklearn.linear_model import LogisticRegression

from sklearn.metrics import classification_report

url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv"

names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']

dataframe = pandas.read_csv(url, names=names)

array = dataframe.values

X = array[:,0:8]

Y = array[:,8]

test_size = 0.33

seed = 7

X_train, X_test, Y_train, Y_test = model_selection.train_test_split(X, Y, test_size=test_size, random_state=seed)

model = LogisticRegression(solver='lbfgs', max_iter=120)

model.fit(X_train, Y_train)

predicted = model.predict(X_test)

report = classification_report(Y_test, predicted)

print(report)

(.env) [boris@fedora34server YANDEXQ]$ python predict.py

              precision    recall  f1-score   support


         0.0       0.81      0.88      0.84       162

         1.0       0.74      0.63      0.68        92


    accuracy                           0.79       254

   macro avg       0.78      0.75      0.76       254

weighted avg       0.78      0.79      0.78       254

















































































(.env) [boris@fedora34server YANDEXQ]$ cat regres01.py

import pandas

from sklearn import model_selection

from sklearn.linear_model import LinearRegression

url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data"

names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']

dataframe = pandas.read_csv(url, delim_whitespace=True, names=names)

array = dataframe.values

X = array[:,0:13]

Y = array[:,13]

seed = 7

kfold = \ model_selection.KFold(n_splits=10,shuffle=True,random_state=seed)

model = LinearRegression()

scoring = 'neg_mean_absolute_error'

results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)

print(("MAE: %.3f (%.3f)") % (results.mean(), results.std()))

(.env) [boris@fedora34server YANDEXQ]$ python regres01.py

MAE: -3.387 (0.667)

(.env) [boris@fedora34server YANDEXQ]$ cat regres02.py

# Cross Validation Regression MSE

import pandas

from sklearn import model_selection

from sklearn.linear_model import LinearRegression

url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data"

names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']

dataframe = pandas.read_csv(url, delim_whitespace=True, names=names)

array = dataframe.values

X = array[:,0:13]

Y = array[:,13]

seed = 7

kfold = \ model_selection.KFold(n_splits=10,shuffle=True,random_state=seed)

model = LinearRegression()

scoring = 'neg_mean_squared_error'

results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)

print(("MSE: %.3f (%.3f)") % (results.mean(), results.std()))

(.env) [boris@fedora34server YANDEXQ]$ python regres02.py

MSE: -23.747 (11.143)


(.env) [boris@fedora34server YANDEXQ]$ cat regres03.py
import pandas
from sklearn import model_selection
from sklearn.linear_model import LinearRegression
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/housing.data"
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']

dataframe = pandas.read_csv(url, delim_whitespace=True, names=names)

array = dataframe.values

X = array[:,0:13]
Y = array[:,13]

seed = 7
kfold    \ =  model_selection.KFold(n_splits=10,shuffle=True,random_state=seed)

model = LinearRegression()

scoring = 'r2'

results = model_selection.cross_val_score(model, X, Y, cv=kfold, scoring=scoring)

print(("R^2: %.3f (%.3f)") % (results.mean(), results.std()))

(.env) [boris@fedora34server YANDEXQ]$ python regres03.py
R^2: 0.718 (0.099)















References

https://machinelearningmastery.com/metrics-evaluate-machine-learning-algorithms-python/




Monday, November 22, 2021

Решение задачи 17 369 Вариант Ларина с помощью Python (numpy,matplotlib,sympy)

Решение с помощью Пайтон, импортируя numpy,matplotlib,sympy в пайтон виртуальное окружение.

Совмещая условие задачи с геометрией плота получаем значения для параметра а = {-2;2; -3*6^(1/2)/4; -3*6^(1/2)/4}. Рассчеты ординат точек экстремума и точек пересечения голубой и красной кривых проделаны стандартными средствами мат. анализа. Plot строит график числителя дроби в аОх плоскости a(x)= x^3/(4-2x^2) и знаменателя dvr(x) = x/(3-x^2). Аналитически находятся корни a'(x) как {-6^(1/2); 6^(1/2} и их ординаты по оси "а" {-3*6^(1/2)/4; 3*6^(1/2)/4}, прямые а=-3*6^(1/2)/4 и а=3*6^(1/2)/4 пересекут график а(х) только в 2-ух точках, а также точки пересечения a(x)=dvr(x) {-1,1,-2,2}. В силу условия задачи нас интересуют ординаты по "a" только {-2,2}. Эти точки лежащие на кривой а(х) вне [-3*6^(1/2)/4; -3*6^(1/2)/4] по оси "a" следует выколоть и тогда а =2 и а =-2 пересекут график а(х) ровно 2-ух точках, а значения их ординат дадут еще два значения а - это {-2,2}, так как в них dvr(x)=a(x) иначе говоря

a(x)=x/(3-x^2) <=> a(x)*(3-x^2)=x <=> a(x)*x^2-3*a(x)+x=0

import matplotlib.pyplot as plt

import numpy as np

from sympy import sympify, lambdify

from sympy.abc import x

fig = plt.figure('a0x - plane')

ax = fig.add_subplot(111)

ax.spines['left'].set_position('zero')

ax.spines['right'].set_color('none')

ax.spines['bottom'].set_position('zero')

ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')

ax.yaxis.set_ticks_position('left')

# setup x and y ranges and precision

xline = np.arange(-5.5,5.5,0.01)

plt.axhline(y = (3*6**(0.5))/4, color = 'green', linestyle = '-')

plt.axhline(y = -(3*6**(0.5))/4, color = 'green', linestyle = '-')

plt.axhline(y =  2.0, color = 'green', linestyle = '-')

plt.axhline(y = -2.0, color = 'green', linestyle = '-')

myfunction=sympify(x**3/(4-2*x**2))

myfunctionDvr=sympify(x/(3-x**2))

mylambdifiedfunction=lambdify(x,myfunction,'numpy')

mylambdifiedfunctionDvr=lambdify(x,myfunctionDvr,'numpy')

ax.plot(xline, mylambdifiedfunction(xline),zorder=100,linewidth=2,color='blue')

ax.plot(xline, mylambdifiedfunctionDvr(xline),zorder=100,linewidth=1,color='red')

ax.set_xbound(-10,10)

ax.set_ybound(-5,5)

plt.show()





































Tuesday, November 9, 2021

Buiding graph via python module importing networkx,plotly

 (.env) [boris@fedora34server NUMPY]$ cat  graphYQ1011.py

import plotly.graph_objects as go

import networkx as nx

G = nx.random_geometric_graph(200, 0.125)

edge_x = []

edge_y = []

for edge in G.edges():

    x0, y0 = G.nodes[edge[0]]['pos']

    x1, y1 = G.nodes[edge[1]]['pos']

    edge_x.append(x0)

    edge_x.append(x1)

    edge_x.append(None)

    edge_y.append(y0)

    edge_y.append(y1)

    edge_y.append(None)

edge_trace = go.Scatter(

    x=edge_x, y=edge_y,

    line=dict(width=0.5, color='#888'),

    hoverinfo='none',

    mode='lines')

node_x = []

node_y = []

for node in G.nodes():

    x, y = G.nodes[node]['pos']

    node_x.append(x)

    node_y.append(y)

node_trace = go.Scatter(

    x=node_x, y=node_y,

    mode='markers',

    hoverinfo='text',

    marker=dict(

        showscale=True,

        # colorscale options

        #'Greys' | 'YlGnBu' | 'Greens' | 'YlOrRd' | 'Bluered' | 'RdBu' |

        #'Reds' | 'Blues' | 'Picnic' | 'Rainbow' | 'Portland' | 'Jet' |

        #'Hot' | 'Blackbody' | 'Earth' | 'Electric' | 'Viridis' |

        colorscale='YlGnBu',

        reversescale=True,

        color=[],

        size=10,

        colorbar=dict(

            thickness=15,

            title='Node Connections',

            xanchor='left',

            titleside='right'

        ),

        line_width=2))

node_adjacencies = []

node_text = []

for node, adjacencies in enumerate(G.adjacency()):

    node_adjacencies.append(len(adjacencies[1]))

    node_text.append('# of connections: '+str(len(adjacencies[1])))

node_trace.marker.color = node_adjacencies

node_trace.text = node_text

fig = go.Figure(data=[edge_trace, node_trace],

             layout=go.Layout(

                title='<br>Network graph made with Python',

                titlefont_size=16,

                showlegend=False,

                hovermode='closest',

                margin=dict(b=20,l=5,r=5,t=40),

                annotations=[ dict(

                    text="Python code: <a href='https://plotly.com/ipython-notebooks/network-graphs/'> https://plotly.com/ipython-notebooks/network-graphs/</a>",

                    showarrow=False,

                    xref="paper", yref="paper",

                    x=0.005, y=-0.002 ) ],

                xaxis=dict(showgrid=False, zeroline=False, showticklabels=False),

                yaxis=dict(showgrid=False, zeroline=False, showticklabels=False))

                )

fig.show()



































































Wednesday, September 15, 2021

Linux versus Unix briefly

 Поскольку Linux - это просто ядро, стоит обсудить основные различия между ядром Linux и ядром  Unix. Существует три типа ядра: монолитное, микро и гибридное (сочетание монолитного и микро), как показано на изображении ниже.






В монолитной архитектуре ядра вся ОС работает в пространстве одного ядра. Оно единолично определяет высокоуровневый виртуальный интерфейс поверх компьютерного оборудования.Хотя ядро ​​Linux заимствует большинство своих характеристик от Unix / Unix-подобных ядер, однако между ними есть некоторые существенные различия. В архитектуре микроядра основные службы ОС работают в одном процессе, а другие службы - в разных процессах. В ядре µ почти минимальное количество механизмов включено в режим ядра. Эти механизмы включают базовый IPC (межпроцессное взаимодействие), планирование и низкоуровневое управление адресным пространством.С точки зрения размера исходного кода, как правило, микроядро меньше монолитного ядра.











Добавление / удаление функций ядра Предоставляет отличную функцию, с помощью которой компоненты ядра, такие как диски устройств, могут быть динамически добавлены и удалены как модули. Эта функция называется загружаемыми модулями ядра (LDM). Это избавляет от необходимости заново компилировать все ядро. Эта функция, в свою очередь, дает Linux большую гибкость.

Традиционное ядро систем Unix требует статической компоновки добавляемых новых систем. В Linux нет подсистемы потокового ввода-вывода. В большинство ядер Unix включена подсистема потокового ввода-вывода, которая оказывается желаемым интерфейсом для написания драйверов устройств, драйверов терминалов и т. д.

Превентивный подход или подход без вытеснения Обычно ядро ​​Linux не является вытесняющим. Однако в последнее время ОС реального времени Linux начала использовать вытесняющие ядра. Некоторые системы Unix полностью вытесняют.Например, Solaris 2.x. и т.п.

Поток ядра Linux использует поток ядра только для периодического запуска некоторого кода ядра. Многие Unix-подобные операционные системы используют поток ядра для переключения контекста процесса. Способы обработки многопоточной среды Благодаря многопоточности создается несколько независимых потоков выполнения, которые называются облегченными процессами (LWP). В Linux LWP создается путем вызова функции clone (). Эти процессы в Linux могут совместно использовать физическую память, открытые файлы, адресное пространство и т. д. В Unix LWP основан на потоках ядра.

В Linux нет подсистемы потокового ввода-вывода. В большинство ядер Unix включена подсистема потокового ввода-вывода, которая оказывается желаемым интерфейсом для написания драйверов устройств, драйверов терминалов и т. д.

Способы обработки многопоточной среды - 
Благодаря многопоточности создается несколько независимых потоков выполнения, которые называются облегченными процессами (LWP). В Linux LWP создается путем вызова функции clone (). Эти процессы в Linux могут совместно использовать физическую память, открытые файлы, адресное пространство и т. д. В Unix LWP основан на потоках ядра.

Примеры

До сих пор в этой лекции мы видели общие основные различия между Linux и Unix. 
Эти различия могут быть более конкретными, если мы сравним их точные версии. Давайте посмотрим на это на нескольких примерах.

Солярис против Linux
Solaris, которая теперь называется Oracle Solaris, - это операционная система семейства Unix. Давайте сравним Linux с Solaris.
Linux поддерживает больше системных архитектур, чем Solaris. Следовательно, Linux более портативен.
Говоря о стабильности и интеграции оборудования, Solaris, похоже, здесь лучше. Linux также быстрее развивается по сравнению с Solaris.
Между ними есть несколько других технических различий, но здесь мы ограничиваем наше сравнение только производительностью.

MacOS против Linux
MacOS - это сертифицированная ОС Unix. У него есть собственное ядро ​​под названием XNU. 
Он используется в компьютерах Apple, которые считаются самыми надежными.MacOS относительно легко настроить. С другой стороны, Linux дешевле и предлагает много программного обеспечения с открытым исходным кодом по сравнению с проприетарными решениями Apple. Кроме того, Linux более гибок, поскольку его можно запускать практически на любом оборудовании, тогда как MacOS может работать только на оборудовании Apple. Например, айфоны.MacOS использует HFS + в качестве файловой системы по умолчанию, тогда как Linux использует ext4.

Ссылки

https://www.softwaretestinghelp.com/unix-vs-linux/




Tuesday, September 14, 2021

Solving one problem from YandexQ as 14/09/2021

 















[boris@fedora34server ~]$ cat  yandexPlot.py

import matplotlib.pyplot as plt

from matplotlib.ticker import (MultipleLocator, FormatStrFormatter,

                               AutoMinorLocator)

import numpy as np

x = np.linspace(0, 30, 30)

y1 = np.cos(np.cos(np.cos(np.cos(x))))

y2 = np.sin(np.sin(np.sin(np.sin(x))))

fig, ax = plt.subplots(figsize=(8, 6))

ax.set_title("Графики зависимостей: y1, y2", fontsize=16)

ax.set_xlabel("x", fontsize=14)        

ax.set_ylabel("y1, y2", fontsize=14)

ax.grid(which="major", linewidth=1.2)

ax.grid(which="minor", linestyle="--", color="gray", linewidth=0.5)

ax.scatter(x, y1, c="red", label="y1")

ax.plot(x, y2, label="y2")

ax.legend()

ax.xaxis.set_minor_locator(AutoMinorLocator())

ax.yaxis.set_minor_locator(AutoMinorLocator())

ax.tick_params(which='major', length=10, width=2)

ax.tick_params(which='minor', length=5, width=1)


plt.show()

[boris@fedora34server ~]$ python  yandexPlot.py


















Next iteration

[boris@fedora34server ~]$ cat  yandexPlot5.py

import numpy as np # import numpy package

import matplotlib.pyplot as plt # import matplotlib.pyplot package

x = np.arange(0,9 * np.pi, 0.1) # create x array of angels from range 0 to 9*3.14

y = np.cos(np.cos(np.cos(np.cos(x)))) -   np.sin(np.sin(np.sin(np.sin(x)))) 

plt.plot(x, y) # plot grah 

plt.title(" Graphical Representation of sine function")

plt.xlabel("x axis ")

plt.ylabel("y axis ")

plt.show() # show plotted graph






























Thursday, September 2, 2021

HTML CONVERSION

Условие Расшифровать пример на умножение, если буквой Ч зашифрованы чётные числа, а буквой Н – нечётные.
Решение Запишем пример в виде

(строчные буквы соответствуют чётным цифрам, а прописные – нечётным).
A < 5,так как Abc·d – трёхзначное число. Но A > 1, так как Abc·d – четырёхзначное число.Следовательно,A=3,d=2,j = 6. Abc·6 = 3·Abc·2 = 3·jKl < 2000 < fGhj, поэтому e = 8, f = 2.
Из нечётности K следует, что c > 5. Так как j = 6, то b < 6, но b ≠ 0 (иначе цифра K была бы чётной). Таким образом, для Abc имеется четыре варианта: 326, 328, 346, 348. Умножая на 28, находим единственное решение: 348·28 = 9744.
Ответ 348·28 = 9744.