These are some of the last photographs of a 60+ year old wild elephant with tusks that dragged along the ground


These images are some of the last known photographs of a more-than-60-year-old elephant named simply F_MU1. Created by wildlife photographer Will Burrard-Lucas, they document a brief moment of her time on this earth towards the end of her life. With tusks that touched the ground, Will notes that she died of natural causes not long after these photographs were captured.

Will has documented the journey on his website but has also allowed us to share some of it with you here on DIYP.

When I first saw her I was awestruck, for she had the most amazing tusks I had ever seen. If I hadn’t looked upon her with my own eyes, I might not have believed that such an elephant could exist in our world. If there were a Queen of Elephants, it would surely have been her.

These are amongst the last images captured of her. Shortly after they were taken, she died of natural causes. She had survived through periods of terrible poaching and it was a victory that her life was not ended prematurely by a snare, bullet or poisoned arrow.

That she managed to survive all this time, passing of natural causes does seem incredible in today’s world. And it shows some hope and promise for our future as a planet packed full of human beings.

Will’s meeting with L_MU1 came about after a project he began August 2017 in partnership with the Tsavo Trust and Kenya Wildlife Service to document their work and the elephants of Tsavo for a new coffee table book. He describes the images of L_MU1 particularly as one of the greatest honours of his career.

It wasn’t long after arriving in Kenya that he was introduced to L_MU1. Riding in a Land Rover with the Tasvu Trust’s founder circling overhead in a small plane, he was guided to the extraordinary female elephant. Had Will not seen her with his own eyes, he might not have believed such a massive elephant could even exist in today’s world. I think most of us would agree with him.

While enormous, she was thin, compared to the younger, stronger elephants in the herd. Time had taken its toll on this beautiful creature. Will continued to photograph the animals, often using the BeetleCam, which shot both stills and video, to capture low angle images where it would be unsafe for him to go himself.

And, indeed, he says that the camera was occasionally kicked as elephants jostled for position by the waterhole. Overall, he says that the elephants became used to the Beetlecam, ignoring its presence quite quickly. It allowed him to get some very unique views that he would not have otherwise been able to photograph.

One can only begin to imagine what it must have felt like to be able to see such an animal in the wild, let alone to be able to photograph it.

As a wildlife photographer, a subject like F_MU1 is incredibly rare; a creature that is unique – possibly the most remarkable of her kind – and yet an animal that few have photographed before. The time I spent with her was a real privilege.

It sounds like a meeting that Will won’t ever forget.

To read more of Will’s story, head on over to his website, and you can pre-order the Land of Giants book here. If you’re interested in finding out more about the book or wish to pre-order a signed copy or prints of the photographs, you can do so on the Land of Giants website.

Images used with permission.

from -Hacking Photography, One Picture At A Time

Boeing is going to update the control software on the 737 Max that may cause the plane to nosedive (BA)


Boeing 737 MAX

  • The Boeing 737 Max will receive updated flight-control software in the coming weeks.
  • The announcement comes nearly five months after the crash of Lion Air Flight 610 and two days after the crash of Ethiopian Airlines Flight 302. Both involved effectively brand-new Boeing 737 Max 8 airliners.
  • The update will change the way the plane’s MCAS control software reacts to faulty sensor readings.
  • Boeing expects the US Federal Aviation Administration to make the update mandatory.

The Boeing 737 Max will be receiving updated flight-control software, the airplane maker announced Tuesday. The announcement comes nearly five months after the crash of Lion Air Flight 610 and two days after the crash of Ethiopian Airlines Flight 302. Both involved effectively brand-new Boeing 737 Max 8 airliners.

In a statement, Boeing said:

"For the past several months and in the aftermath of Lion Air Flight 610, Boeing has been developing a flight control software enhancement for the 737 MAX, designed to make an already safe aircraft even safer. This includes updates to the Maneuvering Characteristics Augmentation System (MCAS) flight control law, pilot displays, operation manuals, and crew training. The enhanced flight control law incorporates angle of attack (AOA) inputs, limits stabilizer trim commands in response to an erroneous angle of attack reading, and provides a limit to the stabilizer command in order to retain elevator authority."

The Chicago-based aviation giant said the update would be implemented across the 737 Max fleet in the coming weeks.

Read more: Boeing has $400 billion in orders on the books, 80% of them for the 737

Boeing expects the US Federal Aviation Administration to issue an Airworthiness Directive "no later than" April to mandate the updated software.

The company has not indicated it will make physical changes to the aircraft, which has been in service since last spring.

At the heart of the controversy surrounding the 737 Max is MCAS, the Maneuvering Characteristics Augmentation System. To fit the Max’s larger, more fuel-efficient engines, Boeing had to redesign the way it mounts engines on the 737. This change disrupted the plane’s center of gravity and caused the Max to have a tendency to tip its nose upward during flight, increasing the likelihood of a stall. MCAS is designed to automatically counteract that tendency and point the nose of the plane downward.

Initial reports from the Lion Air investigation, however, indicate that a faulty sensor reading may have triggered MCAS shortly after the flight took off. Observers fear that a similar thing may have happened in Sunday’s Ethiopian Airlines flight.

More about the Boeing 737 Max 8 and the Ethiopian Airlines disaster:

SEE ALSO: Two Boeing 737 MAX airliners have crashed since October — here are the airlines that fly the plane

FOLLOW US: On Facebook for more car and transportation content!

Join the conversation about this story »

NOW WATCH: Everything you need to know about Tesla’s new Roadster

from SAI

Europe has banned the Boeing 737 MAX — a plane that has crashed twice since October (BA)


Norwegian Air Boeing 737 MAX

  • The European Union Aviation Safety Agency (EASA) has banned all Boeing 737 MAX airliners from flying in Europe.
  • The regulatory agency cited the need to ensure the safety of passengers following the crash of the Ethiopian Airlines Flight ET302 on Sunday.
  • EASA also issued a safety directive that is suspending all non-European airlines from operating the Boeing jet into, within, or out of the European Union.

The European Union Aviation Safety Agency (EASA) has banned all Boeing 737 MAX airliners from flying in Europe. The regulatory agency cited the need to ensure the safety of passengers following the crash of the Ethiopian Airlines Flight ET302 on Sunday. The incident, which killed all 157 on board, marked the second crash of a nearly brand new 737 MAX since October. 

"As a precautionary measure, EASA has published today an Airworthiness Directive, effective as of 19:00 UTC, suspending all flight operations of all Boeing Model 737-8 MAX and 737-9 MAX airplanes in Europe," EASA said in a statement on Tuesday. 

Read more: Boeing is going to update the control software on the 737 Max that may cause the plane to nosedive.

In addition, EASA also issued a safety directive that is suspending all non-European airlines from operating the 737 MAX into, within, or out of the European Union. The agency also said it has offered its assistance to the ET302 crash investigation that’s currently being led by the Ethiopian Authorities with the support of the US National Transportation Safety Board (NTSB). 

Even though EASA has banned the aircraft from its airspace, the agency urged caution and declined to assign to blame for the incident. 

"EASA is continuously analyzing the data as it becomes available," EASA said. "The accident investigation is currently ongoing, and it is too early to draw any conclusions as to the cause of the accident."

Regulatory agencies in China, the United Kingdom, Australia, Singapore, Indonesia, and Ethiopia have all grounded the 737 MAXs operating within their jurisdictions.

The aircraft is still in operation in the US with American, Southwest, and United Airlines. 

More about the Boeing 737 MAX 8 and the Ethiopian Airlines disaster:

SEE ALSO: These 12 airlines have the most Boeing 737 MAX aircraft in their fleet

FOLLOW US: On Facebook for more car and transportation content!

Join the conversation about this story »

NOW WATCH: Take a look inside the ‘Scarlet Lady,’ Virgin’s first adults-only cruise ship sailing to the Caribbean in 2020

from SAI

Random Forest Algorithm In Trading Using Python


By Shagufta Tahsildar

In this blog, we’ll discuss what are Random Forests, how do they work, how they help in overcoming the limitations of decision trees.

With the boom of Machine Learning and its techniques in the current environment, more and more of its algorithms find applications in various domains. The functions and working of machine learning algorithms differ from each other wherein one algorithm may be better for a certain problem than another one. Machine Learning algorithms are constantly updated and upgraded to widen its range of applications and to minimize its shortcomings.

Random Forest algorithm is one such algorithm designed to overcome the limitations of Decision Trees.

In this blog, we will be covering:

Before jumping directly to Random Forests, let’s first get a brief idea about decision trees and how they work.

What are Decision Trees?

Decision trees, just as the name suggests, have a hierarchical or tree-like structure with branches which act as nodes. We can arrive at a certain decision by traversing through these nodes which are based on the responses garnered from to the parameters related to the nodes.

However, decision trees suffer from a problem of overfitting. Overfitting is basically increasing the specificity within the tree to reach to a certain conclusion by adding more and more nodes in the tree thus increasing the depth of the tree and making it more complex.

Further, in this blog, we will understand how Random Forest helps to overcome this drawback of decision trees.

What is a Random Forest?

Random forest is a supervised classification machine learning algorithm which uses ensemble method. Simply put, a random forest is made up of numerous decision trees and helps to tackle the problem of overfitting in decision trees. These decision trees are randomly constructed by selecting random features from the given dataset.

Random forest arrives at a decision or prediction based on the maximum number of votes received from the decision trees. The outcome which is arrived at, for a maximum number of times through the numerous decision trees is considered as the final outcome by the random forest.

Working of Random Forest

Random forests are based on ensemble learning techniques. Ensemble, simply means a group or a collection, which in this case, is a collection of decision trees, together called as random forest. The accuracy of ensemble models is better than the accuracy of individual models due to the fact that it compiles the results from the individual models and provides a final outcome.

How to select features from the dataset to construct decision trees for the Random Forest?

Features are selected randomly using a method known as bootstrap aggregating or bagging. From the set of features available in the dataset, a number of training subsets are created by choosing random features with replacement. What this means is that one feature may be repeated in different training subsets at the same time.

For example, if a dataset contains 20 features and subsets of 5 features are to be selected to construct different decision trees then these 5 features will be selected randomly and any feature can be a part of more than one subset. This ensures randomness, making the correlation between the trees less, thus overcoming the problem of overfitting.

Once the features are selected, the trees are constructed based on the best split. Each tree gives an output which is considered as a ‘vote’ from that tree to the given output. The output

which receives the maximum ‘votes’ is chosen by the random forest as the final output/result or in case of continuous variables, the average of all the outputs is considered as the final output.

Random Forest Algorithm

For example, in the above diagram, we can observe that each decision tree has voted or predicted a specific class. The final output or class selected by the Random Forest will be the Class N, as it has majority votes or is the predicted output by two out of the four decision trees.

Python Code For Random Forest

In this code, we will be creating a Random Forest Classifier and train it to give the daily returns.

Importing the libraries

In [ ]:
import quantrautil as q
import numpy as np
from sklearn.ensemble import RandomForestClassifier

The libraries imported above will be used as follows:

  1. quantrautil – this will be used to fetch the price data of the BAC stock from yahoo finance.
  2. numpy – to perform the data manipulation on BAC stock price to compute the input features and output. If you want to read more about numpy then it can be found here.
  3. sklearn – Sklearn has a lot of tools and implementation of machine learning models. RandomForestClassifier will be used to create Random Forest classifier model.

Fetching the data

The next step is to import the price data of BAC stock from quantrautil. The get_data function from quantrautil is used to get the BAC data for 19 years from 1 Jan 2000 to 31 Jan 2019 as shown below. The data is stored in the dataframe data.

In [2]:
data = q.get_data('BAC','2000-1-1','2019-2-1')
[*********************100%***********************]  1 of 1 downloaded
                 Open       High        Low      Close  Adj Close     Volume  \
2019-01-25  29.280001  29.719999  29.139999  29.580000  29.580000   72182100   
2019-01-28  29.320000  29.670000  29.290001  29.629999  29.629999   59963800   
2019-01-29  29.540001  29.700001  29.340000  29.389999  29.389999   51451900   
2019-01-30  29.420000  29.469999  28.950001  29.070000  29.070000   66475800   
2019-01-31  28.750000  28.840000  27.980000  28.469999  28.469999  100201200   

2019-01-25  Yahoo  
2019-01-28  Yahoo  
2019-01-29  Yahoo  
2019-01-30  Yahoo  
2019-01-31  Yahoo

Creating input and output dataset

In this step, I will create the input and output variable.

  1. Input variable: I have used ‘(Open – Close)/Open’, ‘(High – Low)/Low’, standard deviation of last 5 days returns (std_5), and average of last 5 days returns (ret_5)
  2. Output variable: If tomorrow’s close price is greater than today’s close price then the output variable is set to 1 and otherwise set to -1. 1 indicates to buy the stock and -1 indicates to sell the stock.

The choice of these features as input and output is completely random. If you are interested to learn more about feature selection then you can read here.

In [3]:
# Features construction 
data['Open-Close'] = (data.Open - data.Close)/data.Open
data['High-Low'] = (data.High - data.Low)/data.Low
data['percent_change'] = data['Adj Close'].pct_change()
data['std_5'] = data['percent_change'].rolling(5).std()
data['ret_5'] = data['percent_change'].rolling(5).mean()

# X is the input variable
X = data[['Open-Close', 'High-Low', 'std_5', 'ret_5']]

# Y is the target or output variable
y = np.where(data['Adj Close'].shift(-1) > data['Adj Close'], 1, -1)
In [4]:

Train Test Split

We now split the dataset into 75% Training dataset and 25% for Testing dataset.

# Total dataset length
dataset_length = data.shape[0]

# Training dataset length
split = int(dataset_length * 0.75)
In [5]:
# Splitiing the X and y into train and test datasets
X_train, X_test = X[:split], X[split:]
y_train, y_test = y[:split], y[split:]

# Print the size of the train and test dataset
print(X_train.shape, X_test.shape)
print(y_train.shape, y_test.shape)
(3597, 4) (1199, 4)
(3597,) (1199,)

Training the machine learning model

All set with the data! Let’s train a decision tree classifier model. The RandomForestClassifier function from tree is stored in variable ‘clf’ and then a fit method is called on it with ‘X_train’ and ‘y_train’ dataset as the parameters so that the classifier model can learn the relationship between input and output.

In [6]:
clf = RandomForestClassifier(random_state=5)
In [7]:
# Create the model on train dataset
model =, y_train)
In [8]:
from sklearn.metrics import accuracy_score
print('Correct Prediction (%): ', accuracy_score(y_test, model.predict(X_test), normalize=True)*100.0)
Correct Prediction (%):  52.71059216013344
In [9]:
# Run the code to view the classification report metrics
from sklearn.metrics import classification_report
report = classification_report(y_test, model.predict(X_test))
             precision    recall  f1-score   support

         -1       0.52      0.61      0.56       594
          1       0.54      0.44      0.49       605

avg / total       0.53      0.53      0.52      1199

Strategy Returns

In [10]:
data['strategy_returns'] = data.percent_change.shift(-1) * model.predict(X)

Daily returns histogram

In [14]:
%matplotlib inline
import matplotlib.pyplot as plt
plt.xlabel('Strategy returns (%)')

Strategy Returns

In [13]:
plt.ylabel('Strategy returns (%)')

The output displays the strategy returns and daily returns according to the code for the Random Forest Classifier.


  • Avoids Overfitting
  • Can be used for both Classification and Regression
  • Can handle missing values


  • Large number of trees can take up space and reduce time.

In this blog, we learnt the functioning of the Random Forest Algorithm with the help of an example, along with the Python code to implement this strategy.

Disclaimer:  All investments and trading in the stock market involve risk. Any decisions to place trades in the financial markets, including trading in stock or options or other financial instruments is a personal decision that should only be made after thorough research, including a personal risk and financial assessment and the engagement of professional assistance to the extent you believe necessary. The trading strategies or related information mentioned in this article is for informational purposes only.

Suggested Reads:

Downloadable Files:

The post Random Forest Algorithm In Trading Using Python appeared first on .


How to Use Competitors Keywords to Make More Money


This is a sponsored post written by SE Ranking. The opinions expressed in this article are the sponsor’s own.

Keyword research is tough and tedious.

Finding the best-performing keywords that generate steady revenue – the so-called “golden” keywords – is even harder but once you find them, it’s like striking an oil well.

There are various ways to do the keyword research – from collecting semantics manually to using tools such as Keyword Planner or Keyword Suggestion tool.

But if you want to find the best-performing keywords with a proven history of success, you might consider looking at your competitors’ semantics.

It could well be that the “golden” keywords have been already discovered and all you need to do is to use them for your own benefit.

In this article, we’ll talk about how to find and use competitor keywords to generate the best results from your SEO efforts as well as some other ways to use competitor semantics.

How to Find ‘Golden’ Keywords Using Competitor Research

Let’s illustrate the process using Competitor SEO/PPC research from SE Ranking. The steps here would be as follows:

Step 1: Evaluate Paid Semantics

  • Enter the list of your known competitors or use the tool to find the top 10 in your niche.
  • Check the keywords those competitors are using in their Google Ads campaigns.
  • Review the advertisement history and pick the keywords that your competitor has been using to run campaigns for a long period of time. This is an indicator that the keywords are successfully performing – otherwise the competitor would not be blowing their PPC budget on them.


  • Repeat the third item above for all of your main competitors.

Valuable tip: Also check “common” and “missing” keywords to enrich your semantics with a cluster of keywords that work.

top paid competitors

Step 2: Evaluate Organic Semantics

The approach here is similar to what we discussed in the previous paragraph with the exception that we are going to review the competitor keywords that are at the top of the SERPs.

The dynamics in organic search is much slower and not representative.

  • Collect a list of your main competitors.
  • Select the top-performing keywords.
  • Create your main semantics deriving data from all of your main competitors.

Step 3: Merge Keyword Data from Paid & Organic Semantics

This step brings together the information you found in two previous steps. This is your oil well that is going to fountain out with “golden” keywords.

  • Take the list of keywords from paid semantics data.
  • Add the list from the organic data research and find the keywords that are also present in the paid semantics list.
  • The keywords that are present in both paid and organic lists are the best-performing keywords that your competitors are using to bring highly-converting traffic to their sites!

Golden Keywords

Valuable tip: Use common sense and logic. Your competitors aren’t always smarter than you. Apply your own knowledge and judgment when working on creating your semantic core.

How to Develop Best-Performing Content Using Competitor Intelligence

Competitor intelligence is a whale of information that could be used in enhancing and optimizing the landing pages that you already have. Or for creating brand new landings developed for specific lead-generating campaigns.

To find those ideas employ the following approaches:

Use Competitor ‘Keywords with Potential’

Those are the keywords that your competitor is under-using but can potentially yield great results for you.

For example, you found competitor pages optimized for certain keywords that rank in the 20th to 25th positions that are very relevant and Google seems to be liking them – but something is missing in terms of search intent or content quality.

Review these pages or resources and enhance or create similar content optimized for those keywords on your site.

Use Keywords with Low Search Volume

Those kind of keywords are relevant and targeted for you but have a low or medium level of search volume. Such keywords might become a ground for your growth.

How to Find Them:

Remember the “golden” keywords that are found where the paid and organic semantics merge?

Look again in the advert’s history as well as data collected from organic competitor research and pick the keywords with low and medium search volume. Then create content based on this intelligence.

How to Avoid Errors & Mistakes Using Competitor Intelligence

Paid and organic competitor research data are lifesavers in the costly world of SEO.

Don’t Use Keywords That Your Competitors Dismissed

Google Ads is great at driving quality traffic to your resource. But it’s also a costly channel, especially if you’re trying to find the best performing ads with a hit-or-miss strategy.

A smarter way would be to analyze the history of your competitors’ ads. Here you will see what keywords they played around and dropped as the ones that didn’t bring results needed.

paid keywords

Be careful, though: your competitors are not necessarily always correct when dismissing keywords. However, it can be a good indicator. Just be cautious and avoid falling into the same trap.

Save money – create better campaigns.

Don’t Use Keywords That Google Treat as a Missed Intent

When doing competitor research, you might find good keywords that don’t generate as much traffic as anticipated.

For instance, you detected a strong competitor page that is nicely optimized for the keyword of your interest but it’s stuck in the 30th position in the SERPs.

This might mean that Google understood the user intent differently and didn’t rank their content as initially expected.

So carefully evaluate what keyword the content has been created for and avoid replicating the same tactic.

Do Keyword Grouping

Competitor intelligence is a great way to find “golden” keywords, discover new ideas that can potentially boost your revenue, and avoid errors.

However, you should never blindly apply competitor intelligence to your site. Your competitor site might be suffering from keyword cannibalization or poor site structure.

One way to straighten your strategy and avoid errors while discovering new ideas for optimization and content development is to do keyword grouping.

How to Do It:

  • Take the competitor semantics that you’ve collected while running competitor research.
  • Copy-paste the list of keywords into grouping tool and run the grouping.
  • Analyze the clusters to discover search queries that match the same website’s URLs that are in TOP-10. Use this knowledge to develop a better content strategy.
  • Keyword Grouper from SE Ranking also checks the keywords search volume which helps you to decide what would be the best way to distribute them across the website pages.

keyword grouping


Hopefully the tips and techniques listed above have provided you with valuable information.

Curious how you can derive and apply competitive intelligence in creating the best-performing marketing campaigns?

Just sign up for a free trial and see for yourself the kind of magic you can do by simply analyzing your competitors’ data.

Try SE Ranking for Free

Image Credits

Featured Image: Image by SE Ranking. Used with permission. 
In-Post Photos: Images by SE Ranking. Used with permission.

from Search Engine Journal